我尝试使用实体框架的代码第一和流畅API来实现一对多的关系实体框架6.0一对多的关系是行不通的
在一边,我有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);
...
}
,但它不工作。集合总是空的。
我在做什么错?
根据配置,我会说,它看起来OK。 由于其他原因,您的收藏可能为空:您是否有任何机会禁用了懒加载? –
您是否尝试在您的'ClassDefinitionEntity'中添加Include(e => e.PublishingDefinitions)'来检索查询?或者如果你想延迟加载的行为,使集合属性'虚拟'。 –
@AkosNagy:thx的更新,我检查了LazyLoadingEnabled属性的OnModelCreating。它没有设置。我想要加载。 – webpat