[英]EF Navigational Property through Different Properties Other Than Key
我正在使用類映射舊版應用程序,並對它使用EntityFramework
。
我在此舊數據庫中發現的一個缺陷是,多個表通過2個不同的字段引用了一個特定的表。
我不確定這是否可行,為什么我似乎找不到任何相關信息,所以我在這里。
這是一個視覺樣本:
public class Term {
[Key]
public string Id { get; set; } // sample value: "12-34-56/78"
public string CleanId { get; set; } // sample value: "12345678" (basically the Id without special characters)
public DateTime Date { get; set; }
}
public class App {
public int Id { get; set; }
public string CleanTermId { get; set; } // foreign key is in Term class using the `CleanId` field
}
public class Question {
public int Id { get; set; }
public string TermId { get; set; } // foreign key is in Term class using the `Id` field
}
如何使用Fluent API
DataAnnotations
(首選)將App
和Question
的導航屬性正確地添加到Term
類? 我不需要從Term
到App
或Question
的導航屬性,但是如果您的答案包括它也可以。
讓我知道是否不清楚。
在EF Core之前的EF版本中,除主鍵之外的其他字段上的連接都是不支持的,但是您提到它是一個遺留應用程序,我懷疑您是否需要對其進行全面改造才能使用EF Core。
有一個用戶語音請求要添加此功能,這是因為他們沒有計划將此功能添加到EF6中-因此Core是真正做到這一點的唯一方法。
就您的類而言,您可以將“問題和術語”作為其基礎的PK-FK進行鏈接,但是“應用程序到術語”都是基於非PK字段,即使在數據庫上具有唯一性約束,這也不支持。 EF優先於Core
嗨,這是正確的代碼:
public class Term
{
[Key]
public string Id { get; set; }
public string CleanId { get; set; }
public DateTime Date { get; set; }
}
public class App
{
public int Id { get; set; }
[ForeignKey("CleanTermId")]
public Term MyTerm { get; set; }
public string CleanTermId { get; set; }
}
public class Question
{
public int Id { get; set; }
[ForeignKey("TermId")]
public Term MyTerm { get; set; }
public string TermId { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.