关系约束中的从属角色和主要角色中的属性数必须相同?

时间:2015-11-10 11:40:18

标签: c# entity-framework entity-framework-6.1

ConsumerNM是NM /桥接表/实体。

它与事件表的1:N关系。

当我进行插入时,我会得到问题标题异常。

我需要做些什么才能让它发挥作用?

我是否必须创建2个外键,每个外键指向另一个ConsumerNM_Key?

 public class ConsumerNM
 {
        public ConsumerNM()
        {
           Events = new HashSet<Event>();
        }

        [Key]
        [Column(Order = 0)]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int FK_LEADMETA { get; set; }

        [Key]
        [Column(Order = 1)]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int FK_LEADCONSUMER { get; set; }

        public virtual ICollection<Event> Events { get; set; }      
}

 public class Event
    {
        [Key]
        public int Id { get; set; }

        public DateTime EventDate { get; set; }       

        public virtual ConsumerNM Consumer { get; set; }

        [ForeignKey("Consumer")]
        public int FK_Consumer { get; set; }

    }

1 个答案:

答案 0 :(得分:0)

ConsumerNMEvent不正确。您有两种选择:

第一个选项:

 public class ConsumerNM
 {
        //This is not a PK
        //[Key]
        //[Column(Order = 0)]
        //[DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int FK_LEADMETA { get; set; }

        [Key]
        public int FK_LEADCONSUMER { get; set; }  
}

Event保持不变。

第二个选项:

public class Event
{
    [Key]
    public int Id { get; set; }

    public DateTime EventDate { get; set; }       

    public virtual ConsumerNM Consumer { get; set; }

    [ForeignKey("Consumer")]
    public int FK_LEADCONSUMER { get; set; }

    [ForeignKey("Consumer")]
    public int FK_LEADMETA { get; set; }

}

ConsumerNM保持不变。