我已经苦苦挣扎了几年,但从未找到解决方案。
我有一个表,其中多列引用同一个外表(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
之外定义导航属性名称吗?