所以我在SQL数据库中有一个表:
CompanyRelationships -------------------- ID CompanyID RelatedCompanyID PermissionGroupID
定义公司何时允许将其记录访问另一家公司。 “CompanyID”是授予访问权限的公司,“RelatedCompanyID”是获取访问权限的公司。
是的,同一两家公司可能存在两条记录(每条公司都有权访问另一家公司)
问题是当我从db生成实体模型时(在Visual Studio 2010中),我得到的导航属性并不完全有用,哪个是哪个。我明白了:
Company Company1 UserGroup
UserGroup当然是显而易见的,但我想知道哪个公司参考是哪个,因为这很重要。我确信我可以测试并查找,但是我必须重新测试以确保每次从数据库重新生成。有没有办法强制将导航属性命名为FK字段的命名而不是它链接到的实体?
答案 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
,它将在每一端设置导航属性,如下所示:
这仅仅涵盖了最基本的情况,但它确实存在。如果您想改进拉请求欢迎。它是Apache 2.0许可的。