0

FoxPro テーブルの既存のセットを使用しています。特定の1つのテーブル

public class Charges
{
    public string Bill_Num { get; set; }
    public string Type { get; set; }
    public string Chargeid { get; set; }
    public string Postid { get; set; }
    public DateTime Createdt { get; set; }
    public DateTime Modifydt { get; set; }
    public string Createtm { get; set; }
    public string Modifytm { get; set; }
{

TPHのようです。識別子はTypeフィールド (CまたはP) であるため、次の行に沿ってマッピングしています。

public abstract class LineItem
{
    public string Bill_num { get; set; }
    public string Type { get; set; }
    public DateTime Createdt { get; set; }
    public DateTime Modifydt { get; set; }
    public string Createtm { get; set; }
    public string Modifytm { get; set; }
}

public class LineItemMap : EntityTypeConfiguration<LineItem>
{
    public LineItemMap()
    {
        this.Map<Charge>(m => m.Requires("Type").HasValue("C"));
        this.Map<Posting>(m => m.Requires("Type").HasValue("P"));

        this.ToTable("Charges");
        this.Property(t => t.Bill_Num).HasColumnName("Bill_Num");
        this.Property(t => t.Type).HasColumnName("Type");
        this.Property(t => t.Createdt).HasColumnName("Createdt");
        this.Property(t => t.Modifydt).HasColumnName("Modifydt");
        this.Property(t => t.Createtm).HasColumnName("Createtm");
        this.Property(t => t.Modifytm).HasColumnName("Modifytm");
    }
}

public class Charge : LineItem
{
    public string Chargeid { get; set; }
}

public class ChargeMap : EntityTypeConfiguration<Charge>
{
    public ChargeMap()
    {
        this.HasKey(t => t.Chargeid);

        this.Property(t => t.Chargeid)

        this.ToTable("Charges");
        this.Property(t => t.Chargeid).HasColumnName("Chargeid");
    }
}

public class Posting : LineItem
{
    public string Postid { get; set; }
}

public class PostingMap : EntityTypeConfiguration<Posting>
{
    public PostingMap()
    {
        this.HasKey(t => t.Postid);

        this.Property(t => t.Postid)

        this.ToTable("Charges");
        this.Property(t => t.Postid).HasColumnName("Postid");
    }
}

これを行うとLineItem、単純な主キーがありません。の複合キーは一意になると思いますが{ t.Bill_num, t.Createdt, t.Createtm }、EF や FoxPro プロバイダーがそれを気に入るかどうかはわかりません。

2 番目の問題は、両方のサブクラスがあり、Charges無効Postings化エントリ (別名削除) を含み、Chargeid/が割り当てられていないように見えますが、識別子があるため、またはキー値Postidを持つ派生型になります。null" "

何か不足していますか、それともマッピング/キーの割り当てで正しい軌道に乗っていますか?

4

0 に答える 0