gpt4 book ai didi

c# - 如何防止 Entity Framework 外键生成?

转载 作者:行者123 更新时间:2023-11-30 23:16:39 24 4
gpt4 key购买 nike

我有一个带有 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; }
}

现在 Entity Framework 生成我不需要的外键:

enter image description here

我正在寻找这样的方式:

enter image description here

最佳答案

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

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

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

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

关于c# - 如何防止 Entity Framework 外键生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41926422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com