簡體   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