(注意 - 我無法控制數據庫及其表格)。無外鍵約束的實體框架關係
給出我的問題的一個例子:
表A上有ID(PK)和CREATEDATE 表B上有ID(PK)和A_ID
A_ID不是外鍵,但表B需要從表A獲取create_date。我如何在Entity Framework中執行此操作?
不知道這是否是相關的,但一個可以有0個或多個B和B只能有一個
編輯之一:忘記用流利的API提
編輯2:我已經試過映射這兩個表。
我在B的實體模型上添加了public virtual A {get; set}。 (x => xA).WithOptional()和HasRequired(x => xA).WithMany()。HasForeignKey(x => xA)返回實體配置, > x.A_ID)(即使有很多錯誤,但它是我看到如何指定外鍵的唯一方式,也知道沒有外鍵)。我還添加了HasKey(x => x.A_ID),但對我來說這似乎不正確。
基本上,我嘗試了每種類型的Has和With。我對於實體框架流暢的api仍然很陌生,但是我搜索了互聯網,發現了類似的問題,但是並不足以幫助我想出答案。大多數情況下,我發現'這是不可能的'類型的答案。
就加入而言,糾正我,如果我錯了,這不是流利的API,它不是互相映射表?我會加入我的方法內的表?
編輯3:刪除實體模型和實體配置到目前爲止,不必要的東西和事物名稱變更(但除此之外,它是完全準確)
public class A
{
/// <summary>
/// ID
/// </summary>
public virtual int ID { get; set; }
/// <summary>
/// Relationship to B
/// </summary>
public virtual B b { get; set; }
}
public class B
{
/// <summary>
/// ID of B
/// </summary>
public virtual int ID { get; set; }
/// <summary>
/// Name of B
/// </summary>
public virtual string Name { get; set; }
/// <summary>
/// DateTime B is created
/// </summary>
public virtual DateTime? DateTime { get; set; }
}
public AConfiguration()
{
Property(x => x.ID).HasColumnName("a_id");
Property(x => x.B_ID).HasColumnName("b_id");
HasKey(x => x.ID);
ToTable("a", "safe");
}
public BConfiguration()
{
Property(x => x.ID).HasColumnName("b_id");
Property(x => x.DateTime).HasColumnName("b_datetime");
HasKey(x => x.ID);
ToTable("b", "safe");
}
所以你想要一個約束,但不是在數據庫上? – Stefan
我認爲答案是肯定的。我想把a_id當作外鍵,即使數據庫沒有(它應該是,但由於某種原因,它不是這樣設置的)。 – sam
你嘗試過什麼嗎?如果沒有,你應該。如果是的話,你應該告訴我們什麼不按預期工作。 – Tipx