1 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
在采納了 Rattles 的建議后,我能夠讓模型按預(yù)期工作。
通過創(chuàng)建一個(gè)抽象的 getter,我能夠成功地將它用作我搜索函數(shù)的一個(gè)屬性。通過 getter 只讀取具體屬性,它使模型更易于使用/維護(hù)。然后我只能在 Project 中使用 ProgramID 屬性。謝謝拉特的建議!
基類
public abstract class PMBase
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int ProjectID { get; set; }
[NotMapped]
public virtual int? PMGroupID { get { return ProgramIDGetter(); } }
public abstract int? ProgramIDGetter();
//Omitted rest of Model
}
程序類
public class Program : PMBase
{
public override int? ProgramIDGetter()
{
return this.ProjectID;
}
//NOTE: Database column names were from legacy changes. I wish we could change this, but we do not have time.
[Column("ProgramID")]
public override int ProjectID { get; set; }
public virtual ICollection<Project> Projects { get; set; }
//Omitted rest of Model
}
項(xiàng)目類
public class Project : PMBase
{
public override int? ProgramIDGetter()
{
return this.ProgramID;
}
[Display(Name = "Program Number & Name")]
public override int? ProgramID { get; set; }
//Omitted rest of Model
}
數(shù)據(jù)庫上下文映射
modelBuilder.Entity<Project>()
.Map(prj =>
{
prj.MapInheritedProperties();
prj.ToTable("Projects");
});
modelBuilder.Entity<Program>()
.Map(pgm =>
{
pgm.MapInheritedProperties();
pgm.ToTable("Programs");
});
modelBuilder.Entity<Project>()
.HasOptional(prj => prj.Program)
.WithMany(pgm => pgm.Projects)
.HasForeignKey(prj => prj.ProgramID);
- 1 回答
- 0 關(guān)注
- 198 瀏覽
添加回答
舉報(bào)