我有以下问题:
我有一家公司(CW_Firma),可以通过0到许多方式与他们联系(CW_FirmaCommunication)。 我正在使用EntityFramework和FluentAPI创建关系。
我有以下代码:
[Table("dbo.CW_Firma")]
public class CW_Firma
{
[Key]
[Column("F_VAT")]
public int VatNumber { get; set; }
}
[Table("dbo.CW_FirmaCommunication")]
public class CW_FirmaCommunication
{
[Key]
[Column("FC_VAT")]
public int VatNumber { get; set; }
[Column("FC_Data")]
public string FC_Data { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<CW_FirmaCommunication>()
.HasRequired(c => c.CwFirma)
.WithMany()
.HasForeignKey(f => f.VatNumber);
}
运行代码时,出现以下异常:
多重性在关系“ CW_FirmaCommunication_CwFirma”中的角色“ CW_FirmaCommunication_CwFirma_Source”中无效。由于从属角色是指关键属性,因此从属角色的多重性上限必须为'1'
我一直在搜索互联网,在StackOverflow上寻找不同的解决方案,但是似乎没有什么可以解决我的问题。
谁能告诉我我要去哪里错了?
答案 0 :(得分:0)
基于您的代码,我做了一些更正:
[Table("dbo.CW_FirmaCommunication")]
public class CW_FirmaCommunication
{
[Key]
[Column("Communnication_Id")]
public int CommunicationId { get; set; }
[Column("FC_VAT")]
public int VatNumber { get; set; }
public CW_Firma Firma { get; set; }
[Column("FC_Data")]
public string FC_Data { get; set; }
}
我为通讯表添加了单独的PK(不是FC_VAT),并添加了导航属性Firma。
新映射:
modelBuilder.Entity<CW_FirmaCommunication>()
.HasRequired<CW_Firma>(c => c.Firma)
.WithMany()
.HasForeignKey(f => f.VatNumber);
它正在我的测试数据库中工作。
答案 1 :(得分:0)
经过大量的搜索和尝试,这是我最终得到的结果,并且运作良好:
var
然后我从“ OnModelCreating”中删除了代码。