我正在更改现有应用程序的后端以使用实体框架代码优先的过程。我已经使用Visual Studio 2015中的内置工具来基于我现有的数据库生成POCO类。除了两个类之外,这种方法大部分工作都很完美,具有一对一或一对一的关系。这些是我(简化)类:实体框架一对零或一个外键关联
public class Login
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public int TeamMemberId { get; set; }
public virtual TeamMember TeamMember { get; set; }
}
public class TeamMember
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual Login Login { get; set; }
}
通过以下配置:
public class LoginTypeConfiguration : EntityTypeConfiguration<Login>
{
public LoginTypeConfiguration()
{
this.HasRequired(e => e.TeamMember)
.WithOptional(e => e.Login);
this.Property(e => e.TeamMemberId)
.HasColumnName("TeamMember_Id");
}
}
这将导致以下迁移:
CreateTable(
"dbo.Logins",
c => new
{
Id = c.Int(nullable: false, identity: true),
TeamMember_Id = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.TeamMembers", t => t.Id)
.Index(t => t.Id);
出于某种原因,EF创建一个外键[Logins].[Id]
而不是[Logins].[TeamMember_Id]
。我已经尝试用ForeignKey
属性装饰我的导航属性,但这不起作用。有没有办法让它在[Logins].[TeamMember_Id]
上创建外键?
OMG。我有这个确切的问题。你有幸找到它了吗? –