Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何配置两个实体之间的1对1关系,其中一个是主体?_C#_Entity Framework - Fatal编程技术网

C# 如何配置两个实体之间的1对1关系,其中一个是主体?

C# 如何配置两个实体之间的1对1关系,其中一个是主体?,c#,entity-framework,C#,Entity Framework,我使用实体框架和fluent API来配置绑定。我的两个实体如下所示: public class Matter { #region Properties /// <summary> /// Primary key /// </summary> public int Id { get; set; } /// <summary> /// Navigation: the most recent Relati

我使用实体框架和fluent 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
}
modelBuilder.Entity<RelativityActivity>().HasRequired(m => m.Matter).WithRequiredDependent(m => m.RelativityRecentActivity).Map(m => m.MapKey("matter")).WillCascadeOnDelete(true);
对于
相对性活动
,以及:

modelBuilder.Entity<Matter>().HasOptional(m => m.RelativityRecentActivity).WithRequired(m => m.Matter);
modelBuilder.Entity().has可选(m=>m.RelativityRecentActivity).WithRequired(m=>m.Matter);
对于
问题

我在关系中有两个绑定,因为没有
物质
绑定,我无法确定主端错误。但是现在我得到了一个关于多重性的错误

编辑以澄清:


RelativityActivity
表中的外键列不是
Id
列。它实际上是另一个名为
matter
的专栏。我尝试使用绑定中的
Map
函数来指定它。

db模式只能强制执行
0..1-n
关联。
1:1
关联始终涉及两个相互引用的外键,或同时是另一个主键外键的主键

您可以按照以下方式对1:1关联进行建模:

modelBuilder.Entity<Matter>().HasOptional(m => m.RelativityRecentActivity)
                             .WithRequired(m => m.Matter);

RelativityActivity.Id
是关系中的外键,还是
RelativityActivity.MatterId
表中有第二个字段作为外键?答案很可能是“重要的”。不,外键列实际上是表中另一列,名为“重要”。我想,在我的绑定中,我使用
Map
来指定这一点。无论如何,这就是我的意图。因此,如果我能够调整模式,使
RelativityActivity
的FK to
Matter
也成为表的PK,那么我的绑定逻辑将适用于EF?当然,如果可以更改模式,则可以使映射按您希望的方式工作。也许最简单的方法是查看EF如何使用您选择的映射创建数据库,并将其复制到现有数据库中。谢谢。我认为调整模式使这一点得以实现。要么是那样,要么就是你的措辞!谢谢
modelBuilder.Entity<Matter>().HasMany(m => m.RelativityRecentActivity)
            .WithRequired(r => r.Matter)
            .Map(m => m.MapKey("matter");