【发布时间】:2016-04-19 13:54:36
【问题描述】:
我正在构建一个必须插入大量数据的通用方法。所以我使用 SqlBulkCopy 进行插入,使用反射从对象中获取值,使用 MappingApi 获取数据库模式。我不需要插入嵌套对象以使其尽可能简单。
我正在尝试获取这样的表名:
using (var ctx = GetStorage())
{
tableName = ctx.Db(typeof(T)).TableName;
}
它适用于基类,但不适用于派生类。
架构:
public abstract class A
{
public int Id { get; set; }
}
public class B: A
{
public int Site_Id { get; set; }
}
public class AMap : EntityTypeConfiguration<A>
{
public AMap()
{
HasKey(t => t.Id);
Property(t => t.Id).IsRequired();
ToTable("A");
Property(t => t.Id).HasColumnName("Id");
}
}
public class BMap : EntityTypeConfiguration<B>
{
public BMap()
{
HasKey(t => t.Id);
Property(t => t.Id).IsRequired();
Property(t => t.Site_Id).IsRequired();
ToTable("B");
Property(t => t.Id).HasColumnName("Id");
Property(t => t.Site_Id).HasColumnName("Site_Id");
}
}
EF CRUD 操作正在处理此架构。 EF 为每个操作发送两个请求,首先针对 B 类,然后针对 A 类。但是,ctx.Db(typeof(B)).TableName == "A"
关于如何抛出这个并为类获取正确的表名有什么想法吗?
【问题讨论】:
标签: c# entity-framework ef-code-first table-per-type