mnw*_*mit 4 c# entity-framework foreign-keys self-reference entity-framework-6
我想在实体Stuff上实现版本控制。每个实体都有对下一个版本的可选引用(最新版本为null)和对先前版本的可选引用(第一个版本为null)。我先使用实体框架6,然后编写代码。我尝试使用以下模型和modelbuilder语句(以及许多变体)。
public class Stuff
{
public int StuffId { get; set; }
[ForeignKey("NextVersion")]
public int? NextVersionId { get; set; }
[InverseProperty("PreviousVersion")]
public virtual Stuff NextVersion { get; set; }
public virtual Stuff PreviousVersion { get; set; }
}
modelBuilder.Entity<Stuff>().HasOptional(t => t.NextVersion).WithOptionalDependent(t => t.PreviousVersion);
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,[ForeignKey(“ NextVersion”)]将被忽略,并生成一个外键NextVersion_StuffId。如何指示EF使用属性NextVersionId作为外键?
public class Stuff
{
public int Id { get; set; }
public int? NextVersionId { get; set; }
public int? PrevVersionId { get; set; }
public virtual Stuff NextVersion { get; set; }
public virtual Stuff PrevVersion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
更新:
modelBuilder.Entity<Stuff>().HasOptional(t => t.NextVersion).WithMany().HasForeignKey(t => t.NextVersionId);
modelBuilder.Entity<Stuff>().HasOptional(t => t.PrevVersion).WithMany().HasForeignKey(t => t.PrevVersionId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5243 次 |
| 最近记录: |