我正在使用一组预先存在的 FoxPro 表。具体一张表
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 提供者是否会喜欢这样。
第二个问题似乎是两者的子类,Charges
并且Postings
包含无效条目(也称为删除)并且似乎没有分配Chargeid
/ Postid
,但它确实有一个鉴别器,因此它们将是具有null
或" "
键值的派生类型。
我是否遗漏了什么,或者我的映射/键分配是否正确?