如何首先使用代码在流利的 api 中配置多个关系?

How to configure muliple relationships in fluent api using code first?

我在 运行 代码

时收到以下异常

An object of type 'System.Collections.Generic.HashSet`1[[SolutionName.ProjectName.Contract, SolutionName.ProjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' cannot be set or removed from the Value property of an EntityReference of type 'SolutionName.ProjectName.Contract'.

我有两个 table 合同 table 和客户 table

public partial class Contract
{
    public int ContractId { get; set; }
    public System.Guid Guid { get; set; }
    //nav props
    public virtual Client Client { get; set; }
}
public partial class Client
{
public int Id { get; set; }
public System.Guid Guid { get; set; }
public String ClientName { get; set; }
public Nullable<int> Contract1Id { get; set; } //foreign key pointing to ContractId
public Nullable<int> Contract2Id { get; set; } //foreign key pointing to ContractId
//nav props
public virtual ICollection<Contract> Contracts { get; set; }
public virtual Contract Contract1 { get; set; }
public virtual Contract Contract2 { get; set; }
}

所以我们有 3 个导航属性要从客户端 table 收缩。来自客户端 table 的 Contract1 和 contract2 将各有一行。 但是我希望在 contracts.i 的集合中映射多个合约,已经使用以下流畅的 api 代码尝试了这个合约:

modelBuilder.Entity<Client>()
                    .HasOptional(c => c.Contracts)
                    .WithMany()
                    .HasForeignKey(b => b.Contract1Id);

                modelBuilder.Entity<Client>()
                   .HasRequired(c => c.Contracts)
                   .WithMany()
                   .HasForeignKey(b => b.Contract2Id);

我无法为我的 scenario.please 正确配置流利 api 给点建议

这里我和一个客户有很多合同。换句话说,一个客户可以有很多合同,合同中的 clientId 作为 FK。因此,遵循简单流畅的 API 代码对我有用。

modelBuilder.Entity<Client>()
                    .HasOptional(c => c.Contracts)
                    .WithMany()
                    .HasForeignKey(b => b.Contract1Id);

        modelBuilder.Entity<Client>()
                   .HasRequired(c => c.Contracts)
                   .WithMany()
                   .HasForeignKey(b => b.Contract2Id);

        modelBuilder.Entity<Client>()
                    .HasMany(c => c.Contracts)
                    .WithRequired()
                    .HasForeignKey(a => a.ClientId);