我有几个导航属性,从“用户”表到“报告”表。生成的导航属性显然是这样访问的:
USER.REPORTs.Where(x => ...)
USER.REPORTs2.Where(x => ...)
USER.REPORTs3.Where(x => ...)
第一个是 user createdId,第二个是 UserApprovedId 等等...基本的东西。
这些非常难以解释。如果不访问 EDMX 并检查导航属性,很难判断您正在导航哪个属性。
现在我知道我可以在属性管理器中创建自己的 End1/End2 导航属性,但如果重新创建模型,这些属性就会丢失。
有解决办法吗?
最佳答案
我还没有尝试过,但有一个想法:既然所有实体类型都是分部类,为什么不将 Visual Studio 生成的导航属性包装在另一个具有方便名称的属性中呢?
在您的设计器文件中,您将拥有如下内容:
public partial class MyEntity : EntityObject
{
#region Navigation Properties
public EntityCollection<MyOtherEntity> Other_Entities1
{
// ...
}
#endregion
}
然后您可以创建另一个文件来包装导航属性:
public partial class MyEntity
{
public EntityCollection<MyOtherEntity> OtherEntities
{
get { return Other_Entities1;}
}
}
您将在整个代码中使用上述属性,并且由于在 Visual Studio 生成 .edmx
文件时使用相同的逻辑,因此包装属性不会更改。
即使包装的属性会更改其名称,您也需要在一个地方调整代码。
关于c# - 模型重建后如何保留自定义导航属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281092/