我经常有以下结构:
MyClass
public virtual ICollection<Version> Versions { get; set; }
public virtual Version CurrentVersion { get; set; }
也就是说,有一个东西列表,并且某些类都指向该列表,并且该列表中的一个特定项目-许多版本的当前版本,事件列表中的下一个即将发生的事件等。
在我的模式中,我想最终得到的是一个从 Version 指向 MyClass 的外键——这很正常。但是然后我想要一个从 MyClass 指向代表 CurrentVersion 属性的版本的外键,没有指向回来的外键 - 我不希望额外的存储或麻烦告诉版本 MyClass 它是 CurrentVersion 的,如果有的话。换句话说,我希望这第二种关系是从 MyClass 到 Version 的单向关系,即使它是一对一的。
EF Code First 给我的是第一个属性上的正常一对多,FK 从 Version 到 MyClass,但是第二个属性上的完全一对一关系,FK 指向两个方向 -所以 Version 的底层架构以 MyClass_Id 和 MyClass_Id1 结束。
那么,有没有一种方法可以在不借助 Fluent API 的情况下在 EF Code First 中获得单向关系?看起来可能 System.ComponentModel.DataAnnotations.Schema.InverseProperty 尝试了它,但它似乎没有提供一种方式来说“不要生成一个”。