我有以下情况:
public class User
{
public int ID { get; set; }
public string Name { get; set; }
// ...
public virtual Address Address { get; set; }
}
public class Address
{
public int ID { get; set; }
public string Street { get; set; }
public string ZipCode { get; set; }
// ...
public int UserID { get; set; }
public virtual User User { get; set; }
}
我不能为我的生活弄清楚如何设置流畅的映射。我试过这个:
void Map( DbModelBuilder modelBuilder )
{
var entityConfiguration = modelBuilder.Entity<User>();
entityConfiguration.HasKey( i => i.ID ).Property( i => i.ID ).HasColumnName( "UserID" );
entityConfiguration.HasRequired(i => i.Address)
.WithOptional(i => i.User);
entityConfiguration.ToTable( "MyUser" );
}
但这并不好。它会生成尝试加入User.UserID = Address.AddressID
答案 0 :(得分:2)
EF正在为一对一映射创建正确的关系。您自己的列命名可能会让您感到困惑。
一对一关系定义如下
User Table Address Table
---------- -------------
UserId PK UserID PK, FK
Name ZipCode
子表(Address)的主键也将是父表(User)的外键
如果您要在UserID
表中包含Address
列并将其作为User
表的外键,那么这将是一对多关系,而不是一个 - 到酮。