我有超过10个SQL表,它们具有相同的列结构,但是名称不同。我想使用LINQ来处理这些表中的数据。是否可以创建一个类来模拟表结构,就像我通常做的那样,但是不定义表名?有没有一种方法可以在具有相同结构但不同名称的表上使用LINQ?
使用EF Code First,您可以动态地将实体映射到不同的表:
public class OrderContext : DbContext
{
private readonly string _tableName;
public OrderContext(string tableName)
: base("name=OrderContext")
{
_tableName = tableName;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>().ToTable(_tableName);
base.OnModelCreating(modelBuilder);
}
public ICollection<Order> Orders { get; set; }
}
使用方法:
var orders = new OrderContext("Orders").Orders;
var legacyOrders = new OrderContext("LegacyOrders").Orders;