drt*_*rty 5 c# entity-framework
我有以下实体:
public class Revision
{
public int Id { get; set; }
...
public int? PreviousRevisionId { get; set; }
public virtual Revision PreviousRevision { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要的是使用PreviousRevision导航属性和PreviousRevisionId作为它的外键ID 在同一实体中创建可选 - 可选关系.我知道可以通过PreviousRevisionId使用[ForeignKey("PreviousRevision")]属性注释属性来完成,但是流畅的api呢?
我试过了:
HasOptional(c => c.PreviousRevision)
.WithOptionalDependent()
.Map(m => m.MapKey("PreviousRevisionId"));
Run Code Online (Sandbox Code Playgroud)
,但做迁移我收到错误:
PreviousRevisionId:Name:类型中的每个属性名称必须是唯一的.已定义属性名称"PreviousRevisionId".
所以,基本上,使用流畅的API看起来是不可能的.但我认为注释功能是流畅的API功能的子集,不是吗?
MapKey当您不希望将外键作为模型类中的属性并且希望重命名 EF 在数据库中默认提供的 FK 列名称时,可以使用。
所以,你有两个选择:
您可以像之前尝试的那样映射一对一关系,但需要删除PreviousRevisionId属性:
HasOptional(c => c.PreviousRevision).WithOptionalDependent();// If you want now you can rename the FK column using .Map(m => m.MapKey("PreviousRevisionId"));
Run Code Online (Sandbox Code Playgroud)或者您可以创建单向一对多关系:
HasOptional(c => c.PreviousRevision).WithMany().HasForeignKey(p => p.PreviousRevisionId);
Run Code Online (Sandbox Code Playgroud)我认为最后一个选项更适合您想要实现的目标。
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |