与ObjectContext.Translate一起使用的IDbCommand.ExecuteReader阅读器忽略映射/配置

时间:2014-01-08 17:09:56

标签: entity-framework entity-framework-5

使用此构造

IDbCommand cmd = DbContext.Database.Connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sproc name";
// param work here
DbContext.Database.Connection.Open();
using (DbDataReader reader = (DbDataReader)cmd.ExecuteReader())
{
    result = ((IObjectContextAdapter)this.DbContext).ObjectContext.Translate<T>(reader, dbSetName, MergeOption.AppendOnly).ToList();
    // populate
}

我得到System.Data.entityCommandExecutionException

  

{“数据阅读器与指定的'MyModel'不兼容   该类型的成员'ModelMemberName'没有相应的成员   数据读取器中具有相同名称的列。“}

现在,我确实有MyModel和cotext的OnModelCreating fires映射,并将我的映射添加到DbModelBuilder.Configurations

ObjectContext.Translate documentation间接表示忽略了映射:

The supplied DbDataReader must contain data that maps to the requested entity type

但是我还有其他途径来执行一个特殊的操作并且B)尊重我的映射吗?

修改 EF团队存在一个未解决的问题,即使在6.1中也没有: DbContext: Make SqlQuery (etc.) honor [Column]

0 个答案:

没有答案