使用此构造
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]