我有一个Item
类,其RelatedItemId
属性。 RelatedItemId
可以引用数据库中尚不存在的另一个Item
。
在这种情况下,我想要item.RelatedItem == null
。
如何告诉EF不为此字段创建外键?
public class Item
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public Guid? RelatedItemId { get; set; }
public Item RelatedItem { get; set; }
}
现在,Entity Framework生成我不需要的外键:
我正在寻找这样的方式:
答案 0 :(得分:2)
我试图通过评论要求澄清,但我还没有足够的声望点。所以我会给出一个答案,其中包括对你所问的内容的一些假设(也许还有你真正要问的内容)。
你应该考虑Brad M在他的评论中询问我认为是一个重要的问题。部分原因我认为这是你构建实体类的方式,你似乎在“指导”(通过约定,而不是配置)EF将RelatedItemID视为外键,这会让我怀疑它是否属实你“不需要外键”
所以'快速简单的答案'是你可以重组这个类,这样你就不会'通过约会指示EF生成外键'(比如重命名RelatedItemId属性)。或者您可以使用其中一种“配置”方法来覆盖它(例如,Fluent API);我对此不太确定。
请记住,这样做意味着在您的RelatedItemId指向数据存储中存在确实的RelatedItem的情况下,您将失去外键的任何好处。那可能对你没问题;但如果不是,你可能需要重新考虑(根据Brad M的评论)你想要完成什么以及如何发布更多问题等等。