从存储过程返回行

时间:2010-04-27 11:27:10

标签: entity-framework

我有这段代码:

public IEnumerable<SomeClass> GetAvalibleThingies(DateTime startDate, DateTime endDate, int categoryID)
    {


        if (_entities.Connection.State == System.Data.ConnectionState.Closed)
            _entities.Connection.Open();

        using (EntityCommand c = new EntityCommand("SomeEntities.GetAvalibleThingies", (EntityConnection)this._entities.Connection))
        {
            c.CommandType = System.Data.CommandType.StoredProcedure;

            EntityParameter paramstartDate = new EntityParameter("startDate", System.Data.DbType.DateTime);
            paramstartDate.Direction = System.Data.ParameterDirection.Input;
            paramstartDate.Value = startDate;
            c.Parameters.Add(paramstartDate);

    ........
            var x = c.ExecuteReader();

            return x as IEnumerable<SomeClass>;
        };

但我无法让它返回SomeClass列表。这里有什么需要做的?我使用实体框架3.5sp1一个

/ M

1 个答案:

答案 0 :(得分:1)

EntityDataReader是一个类似于SqlDataReader的类,应该以类似的方式处理。
而不是行

  var x = c.ExecuteReader();
  return x as IEnumerable; 

应该是


  List list = new List();
  using(EntityDataReader reader = c.ExecuteReader()) {
    while(reader.Read()) {
      SomeClass item = new SomeClass() {
      };
      list.Add(item);
    }
  }
  return list;