C# EF4:为什么Translate()不使用表映射?

C# EF4:为什么Translate()不使用表映射?,c#,entity-framework,entity-framework-4,mapping,poco,C#,Entity Framework,Entity Framework 4,Mapping,Poco,如果我有如下db表: CREATE TABLE MyTable ( MyTableId INT PRIMARY KEY, MyTableName CHAR(10) ) 实体框架4 POCO中的实体,自我跟踪定义为: MyTable - maps to MyTable table - Id - maps to MyTableId - Name - maps to MyTableName 为什么这个查询: SqlConnection conn = (SqlConnection)((Entit

如果我有如下db表:

CREATE TABLE MyTable
(
MyTableId INT PRIMARY KEY,
MyTableName CHAR(10)
)
实体框架4 POCO中的实体,自我跟踪定义为:

MyTable - maps to MyTable table
 - Id - maps to MyTableId
 - Name - maps to MyTableName
为什么这个查询:

SqlConnection conn = (SqlConnection)((EntityConnection)context.Connection).StoreConnection;
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM MyTable", conn);
DbDataReader result = cmd.ExecuteReader();
var objResult = context.Translate<MyTable>(result);
没有说:

数据读取器与指定的“Project1.MyTable”不兼容。“Id”类型的成员在数据读取器中没有同名的对应列

Translate方法不应该考虑edmx中定义的表映射吗?有没有办法在查询中不显式定义列的情况下实现这一点?

说:

Translate方法使您能够 执行标准ADO.NET查询 针对数据源并进行翻译 将返回的数据行转换为实体 对象

提供的DbDataReader必须包含 映射到请求实体的数据 类型

它是按名称映射还是通过映射映射并不明确,但由于此ADO.NET查询不是实体查询,因此不严格绑定到抽象层,因此它可能会忽略它并选择属性名称匹配,这似乎是合理的

我想知道您是否应该编写一个而不是TSQL数据库查询?我希望通过模型映射ESQL查询。这应该相当简单;可能只是

var objResult = context.ExecuteStoreQuery<TEntity>(@"select * from MyTable");
说:

Translate方法使您能够 执行标准ADO.NET查询 针对数据源并进行翻译 将返回的数据行转换为实体 对象

提供的DbDataReader必须包含 映射到请求实体的数据 类型

它是按名称映射还是通过映射映射并不明确,但由于此ADO.NET查询不是实体查询,因此不严格绑定到抽象层,因此它可能会忽略它并选择属性名称匹配,这似乎是合理的

我想知道您是否应该编写一个而不是TSQL数据库查询?我希望通过模型映射ESQL查询。这应该相当简单;可能只是

var objResult = context.ExecuteStoreQuery<TEntity>(@"select * from MyTable");

我已经尝试过ExecuteStoreQuery,但它没有处理完全相同的错误,我猜它在内部使用Translate。我已经尝试过ExecuteStoreQuery,但它没有处理完全相同的错误,我猜它在内部使用Translate。