Tag: entity framework

无法在ASP.NET MVCentity framework中将值NULL插入到列中

尝试使用此代码时: var model = new MasterEntities(); var customer = new Customers(); customer.Sessionid = 25641; model.Customers.Add(customer); model.SaveChanges(); 我明白了: {“无法将值NULL插入列’Sessionid’,表’master.dbo.Column’;列不允许空值.INSERT失败。\ r \ n语句已终止。”} “Sessionid”列实际上是主键,用[KEY]标记如下: public class Customers { [Key] public long Sessionid { get; set; } public long? Pers { get; set; } } 所以根据这个问题,似乎当属性用[KEY]标记时,EF忽略了我自己的Sessionid声明,因为它期望数据库分配值。 那我怎么解决这个问题呢? 如果我删除[KEY]我得到”entity type has no key defined”exception…

无法加载文件或程序集EntityFramework

我已经部署了一个ASP.NET MVC 4应用程序并且主页加载正常,但是当我尝试访问任何其他页面(都尝试连接到SQL数据库)时,我收到此错误: 无法加载文件或程序集’EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)描述:在执行当前Web请求期间发生了未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.IO.FileLoadException:无法加载文件或程序集’EntityFramework,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040) 我检查了Web.config文件,它有以下相关条目: … 我已经阅读了我可以通过Google找到的所有内容,但到目前为止还没有任何帮助。 我知道不知何故,我构建应用程序的EF版本与部署机器上的版本不同,但我可以使用一些方法来纠正这种差异。

LINQ to Entities无法识别方法’System.DateTime ToDateTime(System.String)’方法

我试图将一个应用程序转换为EntityFrameWork codefirst。 我现在的代码是 string sFrom =”26/12/2013″; select * FROM Trans where CONVERT(datetime, Date, 105) >= CONVERT(datetime,'” + sFrom + “‘,105) 我试过了 DateTime dtFrom = Convert.ToDateTime(sFrom ); TransRepository.Entities.Where(x =>Convert.ToDateTime(x.Date) >= dtFrom) 但是我得到了这样的错误 LINQ to Entities无法识别方法’System.DateTime ToDateTime(System.String)’方法 请提前帮助,谢谢

持久化entity framework查询缓存

我有一个ASP.NET MVC 5 Web应用程序,并使用EF 6.1访问我的数据库。 我有一些相当复杂的LINQ查询,最多需要10秒才能编译,但之后会在几毫秒内执行。 EF确实缓存了这些查询,第二次执行查询时,它会在几毫秒内返回。 但是这个缓存不会持久存在,所以在每个应用程序重新启动时,需要重新编译查询,再次需要10秒。 有没有办法保持这个查询缓存,以便它能够在应用程序重启后幸存下来?

在Entity Framework 6中更新子对象

(使用Entity Framework 6.2) 我有以下两个模型/实体: public class City { public int CityId { get; set; } public string Name { get; set; } } public class Country { public Country() { Cities new HashSet(); } public int CountryId { get; set; } public string Name { get; set; } public virtual ICollection Cities { get; set; […]

C#Entity Framework“IEntityChangeTracker的多个实例不能引用实体对象”

这个错误引起了很多,但我找不到解决方案。 我是entity framework的新手,在我的第一个方法中,我遇到了这个错误。 这就是我所拥有的。 我有一个公司类和一个分支类。 这两个类都有自己的存储库。 公司有一个分公司,而一个分公司可以有多个公司。 在我的GUI中,我用Branch对象填充一个组合,我从BranchRepository获取: public IList GetAllBranches() { var query = _context.Branches; IList branches = query.ToList(); return branches; } 结果是分支combobox的数据源。 当我想要保存公司时,我会这样做: company.VisitorAddress = txtVisitAddress.Text; company.City = txtCity.Text; company.CompanyName = txtCompany.Text; company.PhoneNumber = txtPhoneNumber.Text; company.ZipCode = txtZipcode.Text; company.Branch = ((Branch)cmbBranches.SelectedItem); company.Website = txtWebsite.Text; 然后,我打电话给我的公司存储库以保存我的公司。 以下是save方法的样子: public bool Save(Company company) { _context.AddToCompanies(company); // […]

将Env Conn字符串注入.NET Core 2.0 w / EF Core DbContext中的不同类lib比启动prj并实现IDesignTimeDbContextFactory

老实说,我不敢相信这有多难……首先是我要求的要求: 实现entity frameworkCore IDesignTimeDbContextFactory , IDbContextFactory被重命名, 以免对开发人员造成什么困扰 我不想不止一次加载appsettings.json 。 一个原因是因为我的迁移在MyClassLibrary.Data域中运行,并且该类库中没有appsettings.js文件,我将不得不Copy to Output Directory appsettings.js 。 另一个原因是它不是很优雅。 所以这就是我目前的工作原理: using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; using AppContext = Tsl.Example.Data.AppContext; namespace Tsl.Example { public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory { public AppContext CreateDbContext(string[] args) { string basePath = AppDomain.CurrentDomain.BaseDirectory; string envName = Environment.GetEnvironmentVariable(“ASPNETCORE_ENVIRONMENT”); IConfigurationRoot configuration = new […]

从Entity Framework连接字符串创建DataContext?

我正在尝试在我的代码中进行此调用: string conn = ConfigurationManager.ConnectionStrings[“MyDBEntities”].ConnectionString; DataContext context = new DataContext(conn); Table myTable = context.GetTable(); 这是我的连接字符串: 创建DataContext时出错: 不支持关键字:’metadata’。 如果我使用第二个连接字符串,我在尝试获取表时出错 : ‘/’应用程序中的服务器错误。 “MyApp.Entities.Employee”类型未映射为表。 我在这做错了什么?

可以在EF代码中设置第一个迁移种子方法的断点吗?

我在我的entity framework6的代码优先迁移过程的Configure.cs中的Seed方法中遇到了问题。 我在Package Manager Console运行Update-Database -verbose命令,并尝试在Seed方法的c#代码中设置断点(在VS studio web express 2013中)。 但即使我把它放在方法的第一个语句中,它也没有被命中,虽然控制台显示running seed method (并且由于我的错误而导致其中断) 那么可以在Seed方法中以某种方式设置断点吗? 如果没有,调试该代码的最佳方法是什么?

从T4更改EF 6代码生成策略

在过去,我已经成功创建了edmx文件。 这是使用EF5和Visual Studio 2012.我已经升级到Visual Studio 2013和EF6。 现有的EF 5代码仍然有效,但现在我遇到了问题。 我可以创建edmx文件和EntityDataSource,我可以配置数据源,它可以很好地查看表和列,但是当我尝试刷新模式时,我得到: 由于EntityDataSource的以下错误,无法确定架构: 找不到CLR类型(我的类型在这里) 我已经看到一个解决方案在线告诉我将我的代码生成策略更改为默认值(在EF 5中创建的现有edmx文件被设置为Legacy ObjectContext),但它不会让我这样做,因为选项’T4’是变灰了。 有没有办法可以强制代码生成策略不使用T4? 编辑: Pawel声称EntityDataSource不支持EF 6.是否有可用的教程显示如何连接到EF 6的简单分步指南? 我从“Beginning ASP.Net 4”一书中获得了所有的EF信息,但现在显然已经过时了。 我看到EF 6仍然处于测试阶段。 也许他们会在某个阶段添加对EntityDataSource的支持? 编辑2: 好吧,我已经习惯了这一点,我可以使用LinqDataSource进行连接。 我几天都没有机会玩它,但它看起来很有效。 编辑3: 使用LinqDataSource不起作用。 它可以执行的唯一CRUD操作是Read。 显然必须有一种方法来使用新的EF 6.0框架(Pawel建议我使用MVC),但它们不能完全打破我的场景(使用网站),是吗? 编辑4: 我已经为我的场景找到了解决方案,请参阅下面的答案。