Tag: entity framework 6

所有Entity Framework方法都应该使用异步吗?

在Asp.Net MVC或Asp.Net Web API中,使用查询数据库(即使是最简单的查询)的每个控制器操作都使用async / await模式是不错的做法? 我知道使用async / await会增加复杂性,但是添加它值得吗? 即使是最简单的查询?

使用原始sql查询加载导航属性

我有这个SQL查询: SELECT t.ServerId, t.Id, s.Name FROM MyTable as t JOIN Server s ON t.ServerId = S.Id 我正在运行它: context.Database.SqlQuery(“query_goes_here”); 如何配置EF以便它使用查询中的返回数据加载我的实体的Server属性? 基于@octavioccl的回答,我最终做到了这一点: foreach(var result in results) { context.Attach(result); context.Entry(result).Reference(p => p.Server).Load(); } 但是我担心这会造成很多数据库的旅行?

具有标识“Id”的项目已存在于元数据集合中。 参数名称:item

我的所有实体都有一个基类: public class Entity : IEntity { dynamic IEntity.Id { get { return this.Id; } set { this.Id = value; } } public TKey Id { get; set; } } 例如状态实体: [MetadataType(typeof(StatusMetadata))] public partial class Status : Entity { public string Title { get; set; } } 当我对数据库运行查询时,我收到以下错误:“具有标识’Id’的项已经存在于元数据集合中。参数名称:item”。 有没有办法解决这个问题,或者这是由inheritance引起的问题,我不能从任何类inheritance我的实体?

EF6和EF4.1在文件层次结构中的区别

我是Entity Framework的初学者。 我注意到当我EF6 with Visual studio 2013使用EF6 with Visual studio 2013 : 我有.Designer.cs空文件与此评论: // T4 code generation is enabled for model ‘C:\Users\Luka\Desktop\Test\EF-db2008\AdventureWorks\AdventureWorksLib\AdventureWorksLib\AWLTModel.edmx’. // To enable legacy code generation, change the value of the ‘Code Generation Strategy’ designer // property to ‘Legacy ObjectContext’. This property is available in the Properties Window when the model // is […]

调试和发布版本之间缺少entity framework参考

在调试版本和发布版本之间的区别以及它对引用的使用中,必定存在一些我不理解的东西。 我正在使用Entity Framework 6连接到之前已设置的数据库。 我能够在调试模式下成功构建和运行项目。 如果我将其更改为发布模式,我会立即获得构建错误,指示无法再找到那里的名称空间和类型。 我查了一下,据我所知他们都是目标框架.Net 4.5,我看到这可能是其他人的问题。 我发现我的解决方案资源管理器中的参考文献中列出的内容没有区别。 我正在使用visual studio 2013.很高兴提供任何代码,但我不知道什么是最相关的。 我得到的一些错误: The type or namespace name ‘Entity’ does not exist in the namespace System.Data’ (are you missing an assembly reference?) in Holds.Context.cs The type or namespace name ‘DbContext’ could not be found (are you missing a using directive or an assembly reference?) in […]

entity framework以一对多替换集合的正确方法

假设客户有许多电话号码,而电话号码只有一个客户。 public class PhoneNumber : IValueObject { public string Number {get; set;} public string Type {get; set;} } public class Customer : IEntity { public ICollection phones {get; private set;} //ew at no encapsulated collection support public void SetPhones(params PhoneNumber[] phones) { this.phones.Clear(); this.phones.AddRange(phones); } } 如果我像这样进行EF映射并运行它,每次我设置电话号码时,它将创建新的PhoneNumbers但不删除旧的。 没有其他实体引用电话号码,我甚至没有在我的dbcontext上公开它,有没有办法告诉EF Customer完全拥有PhoneNumbers ,因此如果从集合中删除了电话号码,他们应该被删除? 我意识到有十几种方法来解决这个问题,但这不是一个奇怪的边缘情况,处理这个问题的“正确”方法是什么。

合并entity framework中的迁移条目

我有一个entity framework6 CF项目,已经有一些迁移。 该模型现在是稳定的,无需保留已存在的迁移历史记录。 有没有办法重置模型并将所有迁移命令合并到初始迁移中? 例如,第一次迁移会添加一列,而第二次迁移会添加唯一的非聚集索引。 我现在想直接在OnModelCreating看到所有这些更改,而不是在单独的迁移中。

EF 6过滤子集合

我正在尝试将旧项目从Linq2Sql迁移到EF6,我遇到了以下问题。 这个项目是多语言的(即所有文本都有超过1个翻译),我有以下数据库结构: 获取所有使用当前语言ID筛选的所有LocalizedContent记录的ExampleEntity1对象的最佳方法是什么? 我可以使用以下代码加载所有带有所有LocalizedContent记录的ExampleEntity1对象: dc.ExampleEntity1.Include(ee => ee.TextEntry.LocalizedContents); 在Linq2Sql中,我可以使用loadOptions.AssociateWith过滤LocalizedContent记录,但我找不到任何loadOptions.AssociateWith解决方案。 我看到了类似的旧问题(发布时间是2 – 3年前),我只是想知道EF6是否有解决方案。 这对我来说是一个非常关键的function,因为我在项目中有几十个实体,我不想为每个选择查询创建自定义对象。 我还发现了EntityFramework.DynamicFilters nuget包可以帮助解决我的问题,但我更愿意使用“原生”EF6function。

Include路径表达式必须引用在type.in eager loading上定义的导航属性

我尝试包括这样的匿名类型:我想要除incomelist , PeriodTypeName之外的所有incomelist属性) var incomeList = ctx.IncomeLists.Include(i => new { CompanyTitle = i.CompanyId.ToString() + “/” + i.Company.CompanyName, PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName) }).ToList() 我的模型部分是这样的: 但我得到以下例外: Include路径表达式必须引用在类型上定义的导航属性。 使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性。 参数名称:路径 结果应该是Gridview的数据源。

如何使用EF6更新多对多表

我有两节课: public partial class ObjectiveDetail { public ObjectiveDetail() { this.SubTopics = new List(); } public int ObjectiveDetailId { get; set; } public int Number { get; set; } public string Text { get; set; } public virtual ICollection SubTopics { get; set; } } public partial class SubTopic { public int SubTopicId { get; set; […]