Linq表达式更改数据存储

时间:2012-05-24 13:23:27

标签: c# .net linq entity-framework linq-to-entities

我有以下代码:

public class MyContext:DbContext
{
    DbSet<ABFoo> ABFoo { get; set; }
    DbSet<CDFoo> CDFoo { get; set; }
}

ABFoo和CDFoo是具有相同成员的类。 我现在和这个查询:

var t = context.ABFoo.Where(a => a.ID == 10);

我想以这种方式改变ABFoo表的方式

var t = context.ABFoo.Where(a => a.ID == 10).OnThePrefixTable("CD");

即使在ABFoo表上执行查询,我也必须切换到CDFoo表。 我知道我必须使用ExpressionVisistors并更改“对象”,但不知道该怎么办! 非常感谢你!

1 个答案:

答案 0 :(得分:1)

你可以使用像AutoMapper https://github.com/AutoMapper/AutoMapper

这样的库

使用

初始化它
Mapper.CreateMap<ABFoo, CDFoo>();

并使用

var cdFooList = Mapper.Map(context.ABFoo.SingleOrDefault(a => a.ID == 10), new CDFoo());

或者如果您返回列表

var cdFoo = Mapper.Map(context.ABFoo.Where(a => a.Id == 10).ToList(), new List<CDFoo>());