【问题标题】:Linq Expression change data storingLinq 表达式更改数据存储
【发布时间】:2012-05-24 13:23:26
【问题描述】:

我有以下代码:

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 并更改“对象”,但不知道该怎么办! 非常感谢!

【问题讨论】:

  • 你想把 ABFoo 中 ID = 10 的数据放到 CDFoo 表中,我明白了吗?

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


【解决方案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>());

【讨论】:

  • 这可能是一个解决方案,因为我已经使用了 automapper。但是这样我会失去自动实体框架依赖跟踪器。使用 SaveChanges 更新对象可能会导致错误。我想保留这个修改更新并选择表达式!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 2011-01-12
相关资源
最近更新 更多