【问题标题】:Linq to Entities convert one entity to similarLinq to Entities 将一个实体转换为相似的实体
【发布时间】:2012-09-13 20:23:51
【问题描述】:

我有一个实体模型,其实体为 PersonLogPerson。它们是相同的,只是 LogPerson 有 2 个附加字段(LogPersonIDCreateDate)。如何将LogPersoncast 转换为Person,以便我的 Linq 代码后面的 VB.NET 代码不必尝试使用这两种可能的类型?

例如:

dim p as person
If useLog then
   p = From a In LogPerson Where ID = x
Else
   p = From a In Person Where ID = x
End If

textbox1.text = p.firstname

【问题讨论】:

  • 您正在尝试做的是“自动映射”。 This question 可能会有所帮助。
  • 不,只是在特定情况下使用特定表(从日志查看,查看活动记录)

标签: vb.net linq entities


【解决方案1】:

没有任何开箱即用的方法。没有第三方工具/库的最简单方法是使用 Select method 并手动映射属性,如下所示:

IEnumerable<Person> people = ...;

IEnumerable<LogPerson> logPeople = people.Select(p => new LogPerson { 
    Name = p.Name,
    Age = p.Age,
    ...
});

当然,这很繁琐,所以如果你有大量的字段或许多地方你必须执行这种操作,你可能想研究一个自动映射库,比如AutoMapper

【讨论】:

    【解决方案2】:
    I am WRITING THE SOLUTION IN C#....
    
    person p;
    if(uselog)
    {
    var per = from pobj in LogPerson
              where pobj.ID= x
              select new person{
              firstname = pobj.firstname,
              lastname = pobj.lastname,
              };
    }else
    {
    var per = from pobj in Person
        where pobj.ID= x
        select new person{
        firstname = pobj.firstname,
        lastname = pobj.lastname,
        };
    }
    p = per.first();
    }
    
    
    textbox1.text = p.firstname
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2011-06-10
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多