在EF Database First中定义自定义导航属性名称

时间:2015-10-21 03:23:45

标签: c# sql-server entity-framework

我已经苦苦挣扎了几年,但从未找到解决方案。

我有一个表,其中多列引用同一个外表(Result表)。

EF,为了区分这些关系,请按如下方式命名导航属性:

public partial class MyTable
{
    public Nullable<int> ResultId { get; set; }
    public Nullable<int> ResultSecondId { get; set; }
    public Nullable<int> ResultThirdId { get; set; }

    public virtual Result Result { get; set; }
    public virtual Result Result1 { get; set; }
    public virtual Result Result2 { get; set; }
}

这意味着我必须知道哪一个是哪个,哪些是我不想做的。我无法重命名设计器中的导航属性,因为对数据库进行了更改,然后更新了模型。

所以,今天我尝试了另一种方法。这是我的代码:

public partial class MyTable
{
    [ForeignKey("ResultSecondId")]
    public virtual Result ResultSecond{ get; set; }
    [ForeignKey("ResultThirdId")]
    public virtual Result ResultThird { get; set; }
}

当我尝试包含此属性时:

context.MyTable.Include(x => x.ResultSecond)

我收到了这个错误:

  

指定的包含路径无效。 EntityType“MyModel.MyTable”未声明名为“ResultSecond”的导航属性。

有什么办法可以在.edmx之外定义导航属性名称吗?

0 个答案:

没有答案