导航属性上加入实体框架表(Navigation Properties on Join Tables

2019-09-25 15:13发布

所以,我有我的SQL数据库中的表:

CompanyRelationships
--------------------
ID
CompanyID
RelatedCompanyID
PermissionGroupID

它定义,当一个公司允许访问它的记录给另一家公司。 该“CompanyID”是授予访问权限的公司,“RelatedCompanyID”是获得接入的公司。

是的,两个记录可能存在相同的两家公司(每个授权访问等)

问题是,当我生成数据库实体模型(在Visual Studio 2010),导航性能我得到的是不完全有益哪个是哪个。 我得到:

Company
Company1
UserGroup

用户组当然是显而易见的,但我想知道哪些公司引用是,因为这是一种非常重要的。 我敢肯定,我可以测试它,并找到答案,但我会在每次我从数据库中再生的时间来重新测试以确保万无一失。 有没有办法迫使导航属性的命名是该领域的FK,而不是它与实体?

Answer 1:

您可以随时点击的实体模型浏览器的导航性能,并查找属性窗口。 该窗口会显示协会名称(在数据库中添加表之间的关系时创建)。 一旦你确定了关系,你总是可以重命名导航属性名称为您选择的名称。

例如,在实体图点击“公司1”的导航属性会显示你的关系名为“Company_Id_to_Related_Company_Id”(或任何名称)。 一旦你知道这意味着什么,你可以重命名的导航属性设置为一个有意义的名称,如“MasterCompany”。



Answer 2:

抓住这个命令行应用https://github.com/timabell/ef-edmx-nav-namer ,在Visual Studio编译并运行它,对你的EDMX文件(需要先备份!)是这样的:

EfEdmxNavNamer.exe -i path\to\your\Model.edmx

对于下面的项名称: FK_Parent_Child它将在每个端部设置的导航属性如下:

  • 在父实体:“儿童”
  • 在子实体:“父”

这只有真正涵盖了最基本的情况下,但它的东西。 如果你想改善它引入请求欢迎。 它的Apache 2.0许可。



文章来源: Navigation Properties on Join Tables in Entity Framework