外键映射到实体框架组合键 [英] Foreign Key mapping to composite keys in entity framework
本文介绍了外键映射到实体框架组合键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
试图建立与实体框架代码如下关系第一。下面的代码不工作我已经尝试了许多变化...没有任何人有一个线索?
约束[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屋!
查看全文