将类映射到具有不同表名但相同列结构的表中

4

我有超过10个SQL表,它们具有相同的列结构,但是名称不同。我想使用LINQ来处理这些表中的数据。是否可以创建一个类来模拟表结构,就像我通常做的那样,但是不定义表名?有没有一种方法可以在具有相同结构但不同名称的表上使用LINQ?


我猜Entity Framework会为我映射表,不是吗? - Jonathan Kittell
使用EF Code First,您可以动态地将实体映射到不同的表。 - abatishchev
我认为我会使用EF,听起来不错。谢谢! - Jonathan Kittell
1个回答

2

使用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;

那么我就不需要使用EF向导了吗?我只需传入要创建集合的表名即可? - Jonathan Kittell
@JonKittell:欢迎来到Code First方法的奇妙世界! :) 您不需要XML/EDMX文件,所有映射都在C#代码中完成。 - abatishchev
太棒了,我在ASP.NET MVC中使用过向导,但真的不想在这个Windows Forms应用程序中使用它。非常酷! - Jonathan Kittell
是的,向导功能确实很混乱。它将在下一个EF主要版本(代号v7)中消失。 - abatishchev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接