Entity Framework(6.1.3)如何命名ICollections?

时间:2016-11-30 11:30:50

标签: c# entity-framework

我们首先更新我们的数据库,并有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

1 个答案:

答案 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>