如何首先使用代码在流利的 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);
我在 运行 代码
时收到以下异常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);