簡體   English   中英

EF Codefirst將基類轉換為派生類

[英]EF Codefirst Convert Base Class to Derived Class

假設以下實體:

public class Kisi
{
    [Key]
    public int KisiID { get; set; }
    public string Ad { get; set; }
    public string Soyad { get; set; }

    public virtual ICollection<Grup> Gruplar { get; set; }
    public virtual ICollection<Kampanya> Kampanyalar { get; set; }
}

public class Musteri : Kisi
{
    public int? Yas { get; set; }
    public string Meslek { get; set; }

}

這兩個類在SQL SERVER中存儲一個表(TPH)。

我保存了一個Kisi,這可能與其他表有關。 我如何在保留相同ID的情況下將其轉換/轉換/“升級”為Musteri? 我無法重建。

我可以發出“手動” SQL INSERT,但這有點丑陋...

我如何在不失去KisiID的情況下進行處理?

如果不繞過EF的抽象,這是不可能的。 EF不允許您在運行時更改實體類型。 鑒別符列未通過EF公開。

您可以做的是使用SQL Update語句手動更新相應的行。

嘗試這個:

var kisi=context.Kisi.Find(Id);
context.Entry(kisi).State=EntityState.Deleted;
var musteri= new Musteri()
{
    KisiID=kisi.KisiID,
    Ad=kisi.Ad,
    Soyad=kisi.Soyad,
    Gruplar= kisi.Gruplar,
    Kampanyalar=kisi.Kampanyalar,
    Meslek="Adaskdm"
}
context.Entry(musteri).State=EntityState.Added;
context.SaveChanges();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM