我们首先更新我们的数据库,并有3个表:
Zoo_Keeper
Zoo_Mammal
Zoo_Reptile
(为简单起见改名!)
守护者可以拥有许多哺乳动物。
守护者可以拥有许多爬行动物。
Zoo_Mammal上的外键链接到Zoo_Keeper。
Zoo_Reptile上的外键链接到Zoo_Keeper。
在EntityFramework中,我们使用来自数据库的'更新模型'功能,我们的Zoo_Keeper自动生成的类如下所示:
namespace ZooApp.DataAccess.EntityDataModels
{
using System;
using System.Collections.Generic;
public partial class Zoo_Keeper
{
public Zoo_Keeper()
{
this.Mammals = new HashSet<Zoo_Mammal>();
this.Zoo_Reptile = new HashSet<Zoo_Reptile>();
}
//some properties
public virtual ICollection<Zoo_Mammal> Mammals { get; set; }
public virtual ICollection<Zoo_Reptile> Zoo_Reptile { get; set; }
}
}
EF如何提出ICollections的名称? (哺乳动物,Zoo_Reptile)
我们很困惑为什么一个人剥夺了动物园&#39;前缀,但另一个没有。我们的数据库是什么导致EF以不同的方式命名关系?
我们检查了FK名称,但这些名称看起来都是一致的:
FK_Zoo_Mammal_Zoo_Keeper
FK_Zoo_Reptile_Zoo_Keeper
答案 0 :(得分:0)
使用NavigationProperty标记在.edmx文件中配置了这些自定义名称:
<EntityType Name="Zoo_Keeper">
...
<NavigationProperty Name="Mammals" Relationship="Self.FK_Zoo_Mammal_Zoo_Keeper" FromRole="Zoo_Keeper" ToRole="Zoo_Mammal" />
</EntityType>