【发布时间】:2014-08-28 16:24:39
【问题描述】:
所以还有一些其他类似类型的帖子,但没有一个与我正在尝试的简单任务相匹配。 只需通过 EF6 代码首先以下列方式运行存储过程
var results = context.DataBase.SqlQuery<MyClass>("exec spGetStuff @param1, @param2", new SqlParameter[] {new SqlParameter("param1",value), new SqlParameter("param2", value2)});
我在很多场合都使用过这种方法,没有任何问题。
我将结果映射到的类非常讨厌,有很多属性,但所有需要它的都标有[Column("dbfieldname")] 属性。
所有存储过程正在做的是通过使用返回一些结果
SELECT * FROM(
SELECT
ROW_NUMBER() OVER ( PARTITION BY X,Y,Z ORDER BY A) [RowNumber]
,*
FROM
MyTableNAme
WHERE
...) S
WHERE s.RowNumber = 1
不插入、更新或任何类似的幻想。
数据读取器与指定的“MyClass”不兼容。类型的成员“PropertyNameName”在数据读取器中没有同名的对应列。
如果我确实将类属性更改为 db 列名,它似乎可以正常工作:我可以更改前几个属性,然后它将在类中的其他属性上失败......但是我真的不想这样做如果我可以避免它,因为数据库中的大多数列的命名确实非常糟糕,所以我想我的问题是为什么它忽略了以前从未让我失望过的[Column()] 属性。
或者是row_number的问题,我尝试将其添加到类和/或从查询结果集中删除。
【问题讨论】:
标签: c# stored-procedures code-first entity-framework-6 row-number