如何防止Entity Framework外键生成?

时间:2017-01-29 21:59:30

标签: c# entity-framework entity-framework-6

我有一个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生成我不需要的外键:

enter image description here

我正在寻找这样的方式:

enter image description here

1 个答案:

答案 0 :(得分:2)

我试图通过评论要求澄清,但我还没有足够的声望点。所以我会给出一个答案,其中包括对你所问的内容的一些假设(也许还有你真正要问的内容)。

你应该考虑Brad M在他的评论中询问我认为是一个重要的问题。部分原因我认为这是你构建实体类的方式,你似乎在“指导”(通过约定,而不是配置)EF将RelatedItemID视为外键,这会让我怀疑它是否属实你“不需要外键”

所以'快速简单的答案'是你可以重组这个类,这样你就不会'通过约会指示EF生成外键'(比如重命名RelatedItemId属性)。或者您可以使用其中一种“配置”方法来覆盖它(例如,Fluent API);我对此不太确定。

请记住,这样做意味着在您的RelatedItemId指向数据存储中存在确实的RelatedItem的情况下,您将失去外键的任何好处。那可能对你没问题;但如果不是,你可能需要重新考虑(根据Brad M的评论)你想要完成什么以及如何发布更多问题等等。