繁体   English   中英

如何防止实体框架外键生成?

[英]How to prevent Entity Framework foreign key generation?

我有一个带有RelatedItemId属性的Item类。 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; }
}

现在实体框架生成我不需要的外键:

在此处输入图片说明

我正在寻找这样的方法:

在此处输入图片说明

我试图通过评论要求澄清,但我还没有足够的声望点。 因此,我将给出一个答案,其中包括对您所询问的内容(以及您“真正询问”的内容)的一些假设。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM