[英]Entity Framework 6.0 One to Many relationship is not working
我尝试先将Entity Framework与代码结合使用,并使用流利的api来实现一对多关系
一方面,我有ClassDefinitionEntity类:
public class ClassDefinitionEntity{
public string LocalClassIsin { get; set; }
public ICollection<PcfPublishingDefinitionEntity> PublishingDefinitions { get; set; }
public ClassDefinitionEntity()
{
PublishingDefinitions = new List<PcfPublishingDefinitionEntity>();
}
}
在很多方面, PcfPublishingDefinitionEntity类:
public class PcfPublishingDefinitionEntity
{
public int ClassId { get; set; }
public ClassDefinitionEntity ClassDefinition { get; set;}
public PcfFormatEnum Format { get; set; }
public PcfPublishingChannelEnum Channel { get; set; }
}
我的列名不遵循实体约定,因此OnModelCreating中的代码如下:
protected override void OnModelCreating(DbModelBuilder modelBuilder){
...
modelBuilder.Entity<PcfPublishingDefinitionEntity()
.ToTable("IFM_PCF_PUBLISHING_DEFINITION");
modelBuilder.Entity<PcfPublishingDefinitionEntity>()
.HasKey(e => new { e.ClassId, e.Channel, e.Format });
modelBuilder.Entity<PcfPublishingDefinitionEntity>()
.Property(e => e.Channel)
.HasColumnName("PUBLICATION_CHANNEL");
modelBuilder.Entity<PcfPublishingDefinitionEntity>()
.Property(e => e.Format)
.HasColumnName("PUBLICATION_FORMAT");
modelBuilder.Entity<PcfPublishingDefinitionEntity>()
.Property(e => e.ClassId)
.HasColumnName("CLASS_ID");
modelBuilder.Entity<PcfPublishingDefinitionEntity>()
.HasRequired(pd => pd.ClassDefinition)
.WithMany(cd => cd.PublishingDefinitions)
.HasForeignKey(pd => pd.ClassId);
...
}
但这不起作用。 PublishingDefinitions集合始终为空。
我究竟做错了什么 ?
我认为EF中一对多或多对多的标准约定是延迟加载,这意味着从数据库中获取数据时必须告诉数据库包括该集合。 如果您使用的是linq,请使用.include。
例如:
yourdbcontext.ClassDefinitionEntity.Include(x => x.PublishingDefinitions).ToList();
如果启用了延迟加载,请确保在关系中包括单词virtual
。 这将帮助EF延迟加载该实体。 请参阅https://docs.microsoft.com/zh-cn/ef/ef6/querying/related-data ,以获取有关延迟加载以及启用此类功能时如何加载实体的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.