Tag: entity framework 5

EF Lambda:Include路径表达式必须引用导航属性

这是我的表达: Course course = db.Courses .Include( i => i.Modules.Where(m => m.IsDeleted == false) .Select(s => s.Chapters.Where(c => c.IsDeleted == false)) ).Include(i => i.Lab).Single(x => x.Id == id); 我知道原因是模块部分中的Where(m => m.IsDeleted == false) ,但为什么会导致错误? 更重要的是,我该如何解决? 如果我删除where子句它工作正常,但我想过滤掉已删除的模块。

如何以N:N关系手动加载相关实体?

我正在使用EF5,当关系为1:N时,如果我想加载相关实体,我会执行以下操作: 使用T-SQL,我使用T-SQL从数据库加载主要实体,如下所示: select * from MainEntities where … 使用T-SQL我加载相关的实体 select * from RelatedEntities where IDMainEntity IN (—) 此时,EF使用相关实体填充主要实体的属性导航。 此外,在dbContext中每个实体类型的local属性中,我拥有每种类型的所有实体。 但是,如果我使用N:N关系执行相同操作,我没有关系中间表的实体,并且当我执行查询时,我在dbContext的本地具有每种类型的实体,但是未填充属性导航。 我想知道为什么以及它是否存在替代方案。 我使用这种方式是因为我想使用T-SQL来创建动态查询。 如果我使用预先加载,我对动态查询的灵活性与使用TSQL时不同,效率较低。 如果我使用显式加载我做N个额外的查询,主要实体的结果中的每个记录之一用我的方式,我只有一个额外的查询,因为我一次得到所有相关的实体。 如果我使用延迟加载我有同样的问题,N个额外的查询。 当关系为N:N时,为什么EF不会填充相关属性? 谢谢。

如何为Entity Framework 5关闭复数表创建?

我正在尝试使用Entity Framework 5.第一个问题是EF自动创建表。 我尝试通过包含dbModelBuilder.Conventions.Remove()来修复它。 第二个问题是像这样的错误 自创建数据库以来,支持“CountryContext”上下文的模型已更改。 考虑使用Code First Migrations来更新数据库。 我尝试通过dbModelBuilder.Conventions.Remove();修改它dbModelBuilder.Conventions.Remove(); 但没有意义。 下一个数据访问层: Table(Name = “tblCountries”)] public class Country { [Column(Name = “id”, IsDbGenerated = true, IsPrimaryKey = true)] public int Id {get;set;} [Column(Name = “name”)] public string Name {get;set;} } public class CountryContext:DbContext { public CountryContext(string connStr):base(connStr) { } public DbSet TblCountries { get; set; […]

建模多态关联数据库优先与代码优先

我们有一个数据库,其中一个表包含可以是其他几个表的子记录。 它有一个“软”外键,由所有者的Id和表名组成。 这种(反)模式被称为“多态关联”。 我们知道它不是有史以来最好的数据库设计,我们会在适当的时候改变它,但不会在不久的将来改变它。 让我举一个简化的例子: Event , Person和Product都有评论记录。 如您所见,没有严格的FK约束。 在Entity Framework中,可以通过将Comment化为EventComment等来支持这个模型,并让Event有一个EventComments集合等: 从数据库生成基本模型后,手动添加子类和关联。 OwnerCode是此TPH模型中的鉴别器。 请注意, Event , Person和Product是完全不同的实体。 为它们建立一个公共基类是没有意义的。 这是数据库优先的。 我们的现实模型就像这样,没问题。 好。 现在我们想要转向代码优先。 所以我开始将数据库逆向工程化为代码优先模型(EF Power Tools),然后继续创建子类并映射关联和inheritance。 试图连接到Linqpad中的模型。 那是麻烦开始的时候。 尝试使用此模型执行查询时,它会抛出InvalidOperationExeception 外键组件“OwnerId”不是“EventComment”类型的声明属性。 validation它是否未从模型中明确排除,并且它是有效的原始属性。 当我有双向关联并且OwnerId被映射为Comment的属性时会发生这种情况。 我的EventMap类( EntityTypeConfiguration )中的映射如下所示: this.HasMany(x => x.Comments).WithRequired(c => c.Event) .HasForeignKey(c => c.OwnerId); 所以我尝试在模型中没有OwnerId映射关联: this.HasMany(x => x.Comments).WithRequired().Map(m => m.MapKey(“OwnerId”)); 这会抛出MetaDataException 指定的架构无效。 错误:(10,6):错误0019:类型中的每个属性名称必须是唯一的。 已定义属性名称“OwnerId”。 (11,6):错误0019:类型中的每个属性名称必须是唯一的。 已定义属性名称“OwnerId”。 如果我删除三个实体注释关联中的两个,那就没关系,但当然这不是治愈方法。 […]

entity framework订购包括

我想尝试以下类似工作: _dbmsParentSections = FactoryTools.Factory.PdfSections .Include(x => x.Children.OrderBy(y => y.Order).ToList()) .Include(x => x.Hint).Include(x => x.Fields) .Where(x => x.FormId == FormId && x.Parent == null) .OrderBy(o => o.Order) .ToList(); 导致exception的部分是: .Include(x => x.Children.OrderBy(y => y.Order).ToList()) 编辑: 经过进一步观察, _dbmsParentSections.ForEach(x => x.Children = x.Children.OrderBy(y => y.Order).ToList()); 为我完成了这项工作(在最初的Factory调用之后,没有Children.OrderBy )。

什么是独立协会和外国关键协会?

可能重复: 代码优先:独立协会与外键协会? 在EF 4或EF 5 Code First中,什么是“独立关联”以及什么是MSDN或外键与独立关系 上使用的“外键关联” – entity framework5有哪些改进? (重点补充): 2.4.1使用外键关联降低视图生成成本 我们已经看到了一些案例,其中模型中的关联从独立关联切换到外键关联大大改善了视图生成所花费的时间。 所以 – 现在我知道要使用哪个。 只要我知道它们是什么以及如何转换成它! 那么,我的问题是,您如何定义这些条款? 什么流利/注释/约定调用每个?