EF6将类似的表映射到一个实体中

时间:2016-02-18 08:16:47

标签: c# sql-server entity-framework linq

我正在创建一个使用旧数据库的应用程序,首先使用EF6数据库,.Net C#。

数据库有两个版本:旧版本和新版本。在新的一些表中,一些表被修改并重命名。例如。旧的有一个表,如:工作,订单,项目等和新的work_t,order_t和item_t。

相应表的内容非常相似,在新的中添加了一些新列,一些被删除。所以我的应用程序应该适用于这两种数据库,因为我只使用两个版本中提供的列。

我想知道是否有任何可行的方法来隐藏某些接口后面的那些表对或者某些东西以避免执行2次LINQ编码的实现。

这并不完全是从2个表中创建一个实体,因为一次只在数据库中显示一个表。我希望有一段代码可以解决其中一个类似的表。

这里是我之后的一些伪代码:

    public workDTO GetWork(int workId)
    {
        MyEntities db = new MyEntities();

        // for old version it will go like
        var work = db.work.Where(a => a.id == workId); 

        // for new version it will go like
        var work = db.work_t.Where(a => a.id == workId); 

        return Mapper.Map(work, workDTO);
    }

因此,我们的想法是为两个表只提供一个方法和一个LINQ实现。

1 个答案:

答案 0 :(得分:0)

是的,您可以通过在实体框架中提供列属性来实现:

Read here

更新:

您可以使用.ToTable()方法:

modelBuilder.Entity()ToTable( “t_Department”);

资料来源:MSDN:http://msdn.microsoft.com/en-us/data/jj591617.aspx