第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

TPC 繼承 1 個(gè)基類,繼承 2 個(gè)子項(xiàng),計(jì)算 1 個(gè)類屬性,未計(jì)算其他類屬性

TPC 繼承 1 個(gè)基類,繼承 2 個(gè)子項(xiàng),計(jì)算 1 個(gè)類屬性,未計(jì)算其他類屬性

C#
縹緲止盈 2021-11-14 15:58:52
我正在開發(fā)一個(gè)有兩個(gè)類和一個(gè)基類的項(xiàng)目?;悡碛?Projects 和 Programs 模型之間的所有公共屬性。項(xiàng)目通過 ProgramID 列與 Programs 相關(guān)聯(lián)。Projects 有一個(gè) ProgramID 的可編輯字段,讓用戶選擇他們想要將項(xiàng)目關(guān)聯(lián)到的程序(并非所有項(xiàng)目都有程序,這就是它可以為空的原因)。本質(zhì)上,我希望項(xiàng)目能夠讀取和寫入數(shù)據(jù)庫,而程序只能讀?。ㄎ丛O(shè)置)。這可以通過 TPC 繼承實(shí)現(xiàn)嗎?歡迎任何建議。如果需要更多信息,我很樂意提供。預(yù)先感謝您的幫助!基類public abstract class PMBase{    [Key]    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]    public virtual int ProjectID { get; set; }    public virtual int? ProgramID { get; set; }    public virtual Program Program { get; set; }    //Omitted rest of Model}程序類public class Program : PMBase{    [Column("PMGroupID")]    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]    public override int? ProgramID { get { return ProjectID; } set { value = null; } }    //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<PMBase> Projects { get; set; }    //Omitted rest of Model}項(xiàng)目類public class Project : PMBase{    [Display(Name = "Program Number & Name")]    [DatabaseGenerated(DatabaseGeneratedOption.None)]    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<PMBase>()  .HasOptional(prj => prj.Program)  .WithMany(pgm => pgm.Projects)  .HasForeignKey(prj => prj.ProgramID);看到的錯(cuò)誤消息在嘗試各種事情時(shí)會(huì)看到這些錯(cuò)誤。當(dāng)我看到UNION錯(cuò)誤時(shí),我覺得我很接近,但似乎無法克服它。無法修改列 \"PMGroupID\",因?yàn)樗怯?jì)算列或 UNION 運(yùn)算符的結(jié)果。覆蓋外鍵組件“ProgramID”不是類型“Project”上的聲明屬性。驗(yàn)證它沒有被明確地從模型中排除并且它是一個(gè)有效的原始屬性。無法確定相關(guān)操作的有效順序。由于外鍵約束、模型要求或存儲(chǔ)生成的值,可能存在依賴性。
查看完整描述

1 回答

?
慕田峪9158850

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);


查看完整回答
反對(duì) 回復(fù) 2021-11-14
  • 1 回答
  • 0 關(guān)注
  • 198 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)