簡體   English   中英

EF產生錯誤的fk

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM