实体框架中连接表的导航属性

时间:2011-06-01 15:01:21

标签: .net database entity-framework-4

所以我在SQL数据库中有一个表:

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

定义公司何时允许将其记录访问另一家公司。 “CompanyID”是授予访问权限的公司,“RelatedCompanyID”是获取访问权限的公司。

是的,同一两家公司可能存在两条记录(每条公司都有权访问另一家公司)

问题是当我从db生成实体模型时(在Visual Studio 2010中),我得到的导航属性并不完全有用,哪个是哪个。我明白了:

Company
Company1
UserGroup

UserGroup当然是显而易见的,但我想知道哪个公司参考是哪个,因为这很重要。我确信我可以测试并查找,但是我必须重新测试以确保每次从数据库重新生成。有没有办法强制将导航属性命名为FK字段的命名而不是它链接到的实体?

2 个答案:

答案 0 :(得分:2)

您始终可以在模型浏览器中单击实体上的导航属性,然后查找“属性”窗口。窗口显示关联名称(在数据库中添加表关系时创建)。一旦确定了Relation,就可以将Navigational Property Name重命名为您选择的名称。

示例,单击实体图中的“Company1”导航属性会显示关系名称为“Company_Id_to_Related_Company_Id”(或者名称不同)。一旦知道它的含义,就可以将导航属性重命名为有意义的名称,例如“MasterCompany”。

答案 1 :(得分:1)

抓住这个命令行应用https://github.com/timabell/ef-edmx-nav-namer,在visual studio中编译它,然后针对你的edmx文件运行它(先备份!),如下所示:

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

对于以下键名:FK_Parent_Child,它将在每一端设置导航属性,如下所示:

  • 在父实体上:“Child”
  • 关于子实体:“父”

这仅仅涵盖了最基本的情况,但它确实存在。如果您想改进拉请求欢迎。它是Apache 2.0许可的。