使用EF核心为该关系错误配置主键或一组兼容的外键属性

问题描述

我不确定为什么会出现此错误: 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; }
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...