Entity framework 代码优先引用一对多
我有以下两个表格: 本地化Entity framework 代码优先引用一对多,entity-framework,entity,code-first,fluent-interface,Entity Framework,Entity,Code First,Fluent Interface,我有以下两个表格: 本地化 Id int Text string 食客 现在我希望我的POCO是这样的: public class Diner{ public int Id{get;set;} public ICollection<Localization> NameLocalization{get;set;} public ICollection<Localization>
Id int
Text string
食客
现在我希望我的POCO是这样的:
public class Diner{
public int Id{get;set;}
public ICollection<Localization> NameLocalization{get;set;}
public ICollection<Localization> DescriptionLocalization{get;set;}
}
public class Localization{
public int Id{get;set;}
public string Text{get;set;}
}
公共级餐厅{
公共int Id{get;set;}
公共ICollection名称本地化{get;set;}
公共ICollection DescriptionLocalization{get;set;}
}
公共类本地化{
公共int Id{get;set;}
公共字符串文本{get;set;}
}
问题是:我们如何使用EF Fluent API将NameLocalization和DescriptionLocalization属性映射到本地化的Id?
谢谢恐怕我还没有测试过这段代码,但可能类似于:
modelBuilder.Entity<Diner>()
.HasRequired(diner => diner.NameLocalization)
.WithMany().IsIndependent()
.Map(s => { s.MapKey(localization => localization.Id, "Name_LocalizationID"); });
modelBuilder.Entity<Diner>()
.HasRequired(diner => diner.DescriptionLocalization)
.WithMany().IsIndependent()
.Map(s => { s.MapKey(localization => localization.Id, "Description_LocationID"); });
modelBuilder.Entity()
.HasRequired(diner=>diner.NameLocalization)
.WithMany().IsIndependent()
.Map(s=>{s.MapKey(本地化=>localization.Id,“Name_LocalizationID”);});
modelBuilder.Entity()
.HasRequired(diner=>diner.DescriptionLocalization)
.WithMany().IsIndependent()
.Map(s=>{s.MapKey(本地化=>localization.Id,“Description_LocationID”);});
SQL Server不支持多个级联删除,因此您需要选择一个关联,以便从对象模型派生SQL Server架构:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Diner>()
.HasRequired(diner => diner.NameLocalization)
.WithMany()
.IsIndependent()
.Map(s =>
{
s.MapKey(localization => localization.Id, "NameLocalizationID");
});
modelBuilder.Entity<Diner>()
.HasOptional(diner => diner.DescriptionLocalization)
.WithMany()
.IsIndependent()
.Map(s =>
{
s.MapKey(localization => localization.Id, "DescriptionLocationID");
});
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasRequired(diner=>diner.NameLocalization)
.有很多
.IsIndependent()
.Map(s=>
{
s、 MapKey(本地化=>localization.Id,“NameLocalizationID”);
});
modelBuilder.Entity()
.has可选(diner=>diner.DescriptionLocalization)
.有很多
.IsIndependent()
.Map(s=>
{
s、 MapKey(本地化=>localization.Id,“DescriptionLocationID”);
});
}
很抱歉,我给了食客错误的导航。当我运行上面的代码时,它返回了许多记录,因此我认为需要将一:一映射更改为一:多映射。因此,我的Diner类将如下所示:公共类Diner{public int Id{get;set;}公共ICollection name本地化{get;set;}公共ICollection description本地化{get;set;}}您能告诉我如何使用Fluent或数据注释来映射它吗?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Diner>()
.HasRequired(diner => diner.NameLocalization)
.WithMany()
.IsIndependent()
.Map(s =>
{
s.MapKey(localization => localization.Id, "NameLocalizationID");
});
modelBuilder.Entity<Diner>()
.HasOptional(diner => diner.DescriptionLocalization)
.WithMany()
.IsIndependent()
.Map(s =>
{
s.MapKey(localization => localization.Id, "DescriptionLocationID");
});
}