[英]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.