问题描述
我不确定为什么会出现此错误: System.InvalidOperationException:具有外键属性{'InsuredID':string}的'从'Insured'到'Quote.Insureds'的关系不能以主键{'InsuredID':string,'ProducerID':string}为目标,因为它不是兼容。为此关系配置一个主键或一组兼容的外键属性。'
我正在尝试在Quote模型中配置两个密钥,一个用于我的保险模型,另一个用于我的生产者。我试图只拥有一个键,然后只使用外键,但这没用。
public class Producer
{
[Key]
public string ProducerID { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public class Insured
{
[Key]
public string InsuredID { get; set; }
public string NamedInsured { get; set; }
public string Address1 {get; set;}
public class Quote
{
public string InsuredID { get; set; }
public string ProducerID { get; set; }
[ForeignKey("ProducerID")]
public IList<Producer> Producers { get; set; }
[ForeignKey("InsuredID")]
public IList<Insured> Insureds { get; set; }
在我的数据库环境中:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Quote>().HasKey(q => new { q.InsuredID,q.ProducerID});
解决方法
不能用键引用数组 它需要是一个对象而不是一个集合。
public class Quote
{
public string InsuredID { get; set; }
public string ProducerID { get; set; }
[ForeignKey("ProducerID")]
public Producer Producer { get; set; }
[ForeignKey("InsuredID")]
public Insured Insured { get; set; }
}