在有导航属性(EF)的地方添加“id”属性

时间:2012-09-04 20:42:05

标签: entity-framework

如果我有导航属性(即:虚拟),例如:
public virtual User Author { get; set; }

我想拥有该用户的ID,即:
public int AuthorId { get; set; }

如何告诉EF这个“AuthorId”必须与作者属性相关?

我不喜欢这种想法是自动的(EF神奇地推断出这一点) 因为可以对同一个表有多个引用:

public virtual User Author { get; set; }
public int AuthorId { get; set; }
public virtual User Receiver { get; set; }
public int ReceiverId { get; set; }

1 个答案:

答案 0 :(得分:8)

实体框架将假定AuthorID是Author类的FK。有关详细信息,请参阅this blog post

您还可以使用数据注释明确告知EF:

[ForeignKey("Author")]
public int AuthorId {get;set;}

或使用流畅的映射:

modelBuilder.Entity<YourClass>().HasRequired(p => p.Author)
                .WithMany()
                .HasForeignKey(p => p.AuthorId);