繁体   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