c# - 模型重建后如何保留自定义导航属性?

标签 c# entity-framework edmx

我有几个导航属性,从“用户”表到“报告”表。生成的导航属性显然是这样访问的:

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/

相关文章:

c# - 有没有办法像c#一样在Excel的VBA中评论一行的一部分

c# - 稀疏八叉树的高效存储?

c# - 通过 ListCollectionView 的 ObservableCollection 显示不正确的项目列表

c# - 在代码中将凭据(用户名/密码)分配给 EF

c# - 使用 EF4(edmx 模型)时偶尔出现 "The underlying provider failed on Open"错误

c# - 如何向 Silverlight 客户端公开 .Net 2.0 Web 服务?

entity-framework - Entity Framework Core - 有转换 - 支持空值

c# - 创建 Entity Framework Context 的实例在负载下变慢

silverlight - 如何使用 EF4 映射存储过程?

c# - 如何强制 Entity Framework 使用 datetime 而不是 datetime2 进行存储过程调用?