外键映射到实体框架组合键 [英] Foreign Key mapping to composite keys in entity framework

查看:170
本文介绍了外键映射到实体框架组合键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图建立与实体框架代码如下关系第一。下面的代码不工作我已经尝试了许多变化...没有任何人有一个线索?



 约束[FK_EVENT_Contact]外国KEY(Patient_ID,[CONTACT_ID])参考
[PatientContact(Patient_ID,PERSON_ID)



公共类PatientContact
{
[键,列(令= 0)
[DatabaseGenerated(DatabaseGeneratedOption.None)
公众诠释PERSON_ID {搞定;组; }
公共虚拟人人{搞定;组; }

[键,列(订单= 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)
公众诠释Patient_ID {搞定;组; }
公共虚拟病人患者{搞定;组; }
}

公共类的事件
{
[关键]
公众诠释EVENT_ID {搞定;组; }

[必填]
公众诠释EventType_ID {获取;集;}
公共虚拟事件类型事件类型{搞定;组; }

[ForeignKey的(病人)]
公众诠释Patient_ID {搞定;组; }
公共虚拟病人患者{搞定;组; }

[ForeignKey的(PatientContact)]
公众诠释CONTACT_ID {搞定;组; }
公共虚拟PatientContact PatientContact {搞定;组; }

}


解决方案

您。这里有2个选项



使用属性,因为你已经例如:

  [ForeignKey的(PatientContact),列(令= 0)
公众诠释PERSON_ID {搞定;组; }
[ForeignKey的(PatientContact),列(订单= 1)]
公众诠释Patient_ID {搞定;组; }
公共虚拟PatientContact PatientContact {搞定;组; }

使用模型构建器(流利API)

  modelBuilder.Entity<事件>()
.HasRequired(p => p.PatientContact)
.WithMany()
.HasForeignKey( p =>新建{p.Person_ID,p.Patient_ID});


Trying to setup the following relationship with entity framework code first. The following code does not work I've tried many variations... does anyone have a clue?

CONSTRAINT [FK_EVENT_Contact] FOREIGN KEY (Patient_ID,[Contact_ID]) REFERENCES
[PatientContact](Patient_ID,Person_ID)



public class PatientContact
{
    [Key, Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Person_ID { get; set; }
    public virtual Person Person { get; set; }

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

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

    [Required]
    public int EventType_ID {get;set;}
    public virtual EventType EventType { get; set; }

    [ForeignKey("Patient")]
    public int Patient_ID { get; set; }
    public virtual Patient Patient { get; set; }

    [ForeignKey("PatientContact")]
    public int Contact_ID { get; set; }
    public virtual PatientContact PatientContact { get; set; }

}

解决方案

You have 2 options here.

Use attributes as you have eg:

[ForeignKey("PatientContact"), Column(Order = 0)]
public int Person_ID{ get; set; }
[ForeignKey("PatientContact"), Column(Order = 1)]
public int Patient_ID{ get; set; }
public virtual PatientContact PatientContact { get; set; }

Use the model builder (fluent api)

modelBuilder.Entity<Event>()
    .HasRequired(p => p.PatientContact)
    .WithMany()
    .HasForeignKey(p => new {p.Person_ID, p.Patient_ID});

这篇关于外键映射到实体框架组合键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆