我首先使用实体框架 4、mvc4 和代码。
我正在努力创建一个选项 1:1 映射,其中具有可选 1:1 映射的主要实体中没有 FK:
public class User
{
[Column("user_id")]
public int Id {get;set;}
public virtual House House {get;set;} // optional mapping
}
public class House
{
[Column("house_id")]
public int Id {get;set;}
[Column("user_id")]
public int UserId {get;set;}
}
请注意用户表如何没有 houseId 列。
我怎样才能正确映射它?
注意:下面的方法不是我真正想做的,因为它迫使我在 House 模型上添加导航属性也返回给 User。
我尝试了这种方法,尽管我不得不向 House 模型添加一个我不想这样做的虚拟属性:如何首先在 EF 4.1 代码中使用延迟加载和相同的主代码编写可选的一对一关系两张桌子上的钥匙?
所以我的配置看起来像上面的尝试:
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
this.ToTable("User", SchemaName);
this.HasKey(x => x.Id);
this.HasOptional(x => x.House);
}
}
public class HouseConfiguration : EntityTypeConfiguration<House>
{
public HouseConfiguration()
{
this.ToTable("House", SchemaName);
this.HasKey(x => x.Id);
this.HasRequired(vc => vc.User).WithRequiredDependent(v => v.House);
}
}
但是当我这样做时,保存模型我得到这个错误:
Cannot insert explicit value for identity column in table 'House' when IDENTITY_INSERT is set to OFF
注意:如果没有上述设置(映射和配置),House 实体会很好地保存到数据库中,并且身份设置正确。