【问题标题】:Convert and map/add Entity Framework Data to user defined class将实体框架数据转换并映射/添加到用户定义的类
【发布时间】:2017-04-19 13:13:22
【问题描述】:

List < Special > spl = new List < Special > ();
DBEntities entity = new DBEntities();
DateTime ? startDate = Convert.ToDateTime("2017-01-01");
DateTime ? end = Convert.ToDateTime("2017-04-18");
IEnumerable < Object > splist = entity.spGetData(startDate, end, "AAA").ToList();

public class Special {
  public int ? NO {
    get;
    set;
  }
  public string[] SNo {
    get;
    set;
  }
  public string[] Div {
    get;
    set;
  }
  public string[] ITEMO {
    get;
    set;
  }
  public DateTime ? DDT {
    get;
    set;
  }

}

我有一个存储过程,它返回一些我通过实体框架访问的记录集。但返回类型是 system.data.entity.core.objects.objectresult 并且我想将它映射/添加到我的用户定义的类中。它说的是 Unable to cast object of type..... 我将它转换为 IEnumerable List 但我想遍历每条记录并制作我自己的自定义选定对象列表并拉出特殊类对象中的数据。

【问题讨论】:

  • 请阅读minimal reproducible example以获得更好的帮助。
  • 问题与javascript或角度代码无关。请适当标记问题
  • 你能提供你的存储过程的代码吗?如果不知道返回数据的结构,就无法知道您的类/对象是否会正确映射它。

标签: c#-4.0 entity-framework-6


【解决方案1】:

您是否有理由不能只使用 Entity 自动生成的 ObjectResult 类,而不是创建自己的类?如果您正在做的事情有意义,那么一种选择(假设结果集不是太大)是使用 Linq 提供的 Select 方法转换存储过程的结果。它看起来像这样:

MyClass myObject = storedProcedure().Select( s => new MyClass() { 

myVariable = s.variable,
myOtherVariable = s.otherVariable,
// and so on for each property that you want to map to your class

});

【讨论】:

  • 好一个@Matt。虽然答案可能/是正确的,但 OP 没有在问题中提供足够的信息。请确保检查问题编辑并反映答案。
  • Matt,有没有人通过成功转换结果集返回给我的用户定义类分配一组记录。
  • Matt,请您检查一下并告诉我代码。
  • @Saleem,@Matt 提供的答案在您的情况下是正确的。而不是IEnumerable&lt;Object&gt; 使用IEnumerable&lt;Special&gt; 并在toList() 之后执行答案中提供的转换。 MyClass 变为 Special
  • List myObject = gfientity.spGetProductLine(....).Select(s => new Special() { 将存储过程结果中的任何变量分配给您的 Special 对象 (见上文)}.ToList();
猜你喜欢
  • 2011-08-14
  • 2010-10-14
  • 1970-01-01
  • 2014-12-13
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多