我正在使用實體框架和流利的API來配置綁定。我的兩個實體是這樣的:如何配置兩個實體之間的1對1關係,其中一個是主體?
public class Matter
{
#region Properties
/// <summary>
/// Primary key
/// </summary>
public int Id { get; set; }
/// <summary>
/// Navigation: the most recent Relativity activity for the Matter
/// </summary>
public virtual RelativityActivity RelativityRecentActivity { get; set; }
#endregion
}
public class RelativityActivity
{
#region Properties
/// <summary>
/// Primary key
/// </summary>
public int Id { get; set; }
/// <summary>
/// Foreign key: the Matter that the Relativity Activity entry is associated with
/// </summary>
public Matter Matter { get; set; }
#endregion
}
我與現有的表架構的工作,並且在架構中RelativityActivity
表只是有一個外鍵Matter
的Id
列。因此,Matter
是關係中的主體,可以不存在RelativityActivity
。但是,如果沒有Matter
,則RelativityActivity
不能存在。
對於我的生活,我似乎無法配置這個工作,因爲我期望。我已經閱讀了大量關於SO的答案,並且我在閱讀每個答案後調整了流暢的API綁定,但是我總是會看到從「無法確定主要關係端點」到「您用不正確的多重配置」 。
我現在一口流利的API綁定是這樣的:
modelBuilder.Entity<RelativityActivity>().HasRequired(m => m.Matter).WithRequiredDependent(m => m.RelativityRecentActivity).Map(m => m.MapKey("matter")).WillCascadeOnDelete(true);
爲RelativityActivity
和:
modelBuilder.Entity<Matter>().HasOptional(m => m.RelativityRecentActivity).WithRequired(m => m.Matter);
爲Matter
。
我在關係中有兩個綁定,因爲沒有Matter
綁定,我無法確定主要結束錯誤。但是現在我得到了一個關於多重性的錯誤。
編輯澄清:
外鍵列,在RelativityActivity
表,是不是Id
列。這實際上是另一列名爲matter
。我嘗試在我的綁定中使用Map
函數來指定它。
是'RelativityActivity.Id'國外是否在關係中鍵入關鍵字,或者在RelativityActivity表中是否存在第二個字段,例如RelativityActivity.MatterId?這可能對答案很「重要」。 –
不,外鍵列實際上是表中的另一列,名爲「問題」。在我的綁定中,我使用'Map'來指定。無論如何,這是我的意圖。 – Ryan