假设我想选择类别中返回的第一个产品,但是我需要直接传递一个sql字符串。注意我是如何指定context.Products.SqlQuery的。即使我没有选择查询中的所有产品字段,我也认为这是可行的。我真的需要选择一个匿名类型,然后将其转换为产品吗?
我得到的错误是:数据读取器与指定的'AppModel.Product‘不兼容。类型的成员'InsertDate‘在数据读取器中没有同名的相应列。
下面是我的代码:
StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT Id, ProductName ");
sql.AppendLine("FROM Product ");
sql.AppendLine("WHERE CategoryId=@CategoryId ");
var retval = context.Products.SqlQuery(sql.ToString(),
new SqlParameter("@CategoryId", categoryId)).FirstOrDefault();
return retval;发布于 2015-06-11 19:33:28
实体框架不能根据SQL语句的结果构造整个Product,因为您只返回这两个字段。如果你这样做的话,它应该会起作用:
sql.AppendLine("Select * ");
sql.AppendLine("FROM Product ");
...或者手动指定所有字段。
https://stackoverflow.com/questions/30789813
复制相似问题