我在运行代码时收到以下异常
一个类型的对象 'System.Collections.Generic.HashSet`1 [[SolutionName.ProjectName.Contract, SolutionName.ProjectName,版本= 1.0.0.0,文化=中性, 无法设置或从值中删除PublicKeyToken = null]]' 类型的EntityReference的属性 “ SolutionName.ProjectName.Contract”。
我有两个表Contract表和Client表
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
因此,我们有3个导航属性可以从客户表中进行签约。来自客户表中的Contract1和Contract2将各有一行。 但是iam希望在合同集合中映射多个合同。我已经使用以下流利的api代码尝试了这一合同:
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; }
}
我无法为我的场景正确配置流利的api。请提出一些建议
答案 0 :(得分:1)
在这里,我与一位客户有很多合同。换句话说,客户可以在合同中拥有许多具有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);