[英]EF generating the wrong fk
我有兩個poco
public class Person {
[Key]
public virtual int Id { get; set; }
public virtual int? AtendeeId { get; set; }
[ForeignKey("Id")]
public virtual Atendee Atendeed { get; set; }
}
public class Atendee {
[Key]
public virtual int Id { get; set; }
public virtual int PersonId { get; set; }
public virtual Person Person { get; set; }
}
由於某種原因,這將使用atendee的ID列而不是personId從參與者到人創建FK。 宣告這一點的正確方法是什么?
這是生成的FK:
ALTER TABLE [dbo].[Atendees] WITH CHECK ADD CONSTRAINT [FK_dbo.Atendees_dbo.People_Id] FOREIGN KEY([Id])
REFERENCES [dbo].[People] ([Id])
您只列出集合(即1-N關系)的“相反”外鍵。
您似乎有1-1關系。
//[ForeignKey("Id")]
[ForeignKey("AtendeeId")] // or just omit this
public virtual Atendee Atendeed { get; set; }
public class Person {
[Key]
public virtual int Id { get; set; }
[ForeignKey("Atendeed")] // refer to the property
public virtual int? AtendeeId { get; set; }
public virtual Atendee Atendeed { get; set; }
}
但是您應該考慮在OnModelBuilding中使用流利的表示法,通常可以給您更多的控制權。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.