我正在使用实体框架和流畅的 API 来配置绑定。我的两个实体如下所示:
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
的外键。因此,是关系中的主体,并且可以在没有 的情况下存在。没有a就不能存在Matter
Id
Matter
RelativityActivity
RelativityActivity
Matter
但是,
对于我的一生,我似乎无法将其配置为按预期工作。我已经阅读了大量关于 SO 的答案,并且在阅读完每个答案后都调整了我的流畅 API 绑定,但我似乎总是遇到错误,从“无法确定关系的主体端”到“你配置了不正确的多重性” .
我当前的 fluent 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
绑定中的函数来指定它。