我正在实现一些从数据库查询ID的通用解决方案。例如,我所知道的是,给定一个表A
,它有一个整数类型的列Id
。我不知道是uint32
还是int64
等
我想使用DbContext.Database.SqlQuery
查询ID的最大值,但是,我不能使它以弱类型的方式工作。所以我总是要提供一个强元素类型,基本上我不喜欢它,因为它可能是int
或long
。
如果我像.SqlQuery<object>
一样运行它,那么当我试图使用Convert.ToInt64
将它转换为例如long
时,我会遇到异常,说System.Object
不能转换为该类型。看来EF有点误解我了。
即使当实际的底层类型是Int32
,并且我试图查询long
时,我也会得到一个exeption,说明我无法将Int32
转换为long
,这对我来说完全没有意义
我如何才能获得一个弱类型的查询结果,我可以将其转换为我想要的任何结果?
不幸的是,实体框架是为映射明确(强类型(的POCO类而设计的。
类型的名称和每个映射属性的名称必须相等。
- 您可以使用这些技术将
long
转换为int
。但这也需要您事先了解列类型 - 您可以使用此处显示的代码转换为
dynamic
类型。但与ADO.NET、IMO