0xb*_*00d 4 c# entity-framework foreign-keys
class First
{
[Key]
public int Id { get; set; }
}
class Second
{
[Key]
public int Id { get; set; }
public int? First_Id { get; set; }
[ForeignKey("First_Id")]
public First First { get; set; }
}
public class SecondMapping : EntityTypeConfiguration<Second>
{
public SecondMapping ()
: base()
{
this.HasOptional(s => s.First)
.With ... ???
}
}
Run Code Online (Sandbox Code Playgroud)
第二个可能参考First.但是First从来没有提到Second.是否可以将此映射应用于Entity Framework 4.1?
编辑: 以前,这是我的解决方案:
this.HasOptional(s => s.First)
.WithOptionalDependent()
.WillCascadeOnDelete(false);
Run Code Online (Sandbox Code Playgroud)
第二个可以包含First的一个实例(取决于某种Usage-Attribute).首先不包含Second的任何实例.
Lad*_*nka 10
只有当外键也是从属实体的主键时,才能实现一对一关系.所以正确的映射是:
class First
{
[Key]
public int Id { get; set; }
}
class Second
{
[Key, ForeignKey("First")]
public int Id { get; set; }
public First First { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
原因是要在数据库中强制实施一对一关系,外键在Second实体中必须是唯一的.但实体框架不支持唯一键 - EF唯一的唯一值是主键.这是EF的限制.
Morteza Manavi的博客上描述了解决方法.解决方法基于将关联映射为一对多,并通过在自定义数据库初始化程序中引入唯一约束来强制执行数据库中的唯一性.
| 归档时间: |
|
| 查看次数: |
4459 次 |
| 最近记录: |