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; }
}
我需要的是使用PreviousRevision导航属性和PreviousRevisionId作为它的外键ID 在同一实体中创建可选 - 可选关系.我知道可以通过PreviousRevisionId使用[ForeignKey("PreviousRevision")]属性注释属性来完成,但是流畅的api呢?
我试过了:
HasOptional(c => c.PreviousRevision)
    .WithOptionalDependent()
    .Map(m => m.MapKey("PreviousRevisionId"));
,但做迁移我收到错误:
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")); 
或者您可以创建单向一对多关系:
HasOptional(c => c.PreviousRevision).WithMany().HasForeignKey(p => p.PreviousRevisionId);
我认为最后一个选项更适合您想要实现的目标。
| 归档时间: | 
 | 
| 查看次数: | 498 次 | 
| 最近记录: |