在实体框架6中,如果没有强元素类型,我可以使用DbContext.Database.SqlQuery吗



我正在实现一些从数据库查询ID的通用解决方案。例如,我所知道的是,给定一个表A,它有一个整数类型的列Id。我不知道是uint32还是int64

我想使用DbContext.Database.SqlQuery查询ID的最大值,但是,我不能使它以弱类型的方式工作。所以我总是要提供一个强元素类型,基本上我不喜欢它,因为它可能是intlong

如果我像.SqlQuery<object>一样运行它,那么当我试图使用Convert.ToInt64将它转换为例如long时,我会遇到异常,说System.Object不能转换为该类型。看来EF有点误解我了。

即使当实际的底层类型是Int32,并且我试图查询long时,我也会得到一个exeption,说明我无法将Int32转换为long,这对我来说完全没有意义

我如何才能获得一个弱类型的查询结果,我可以将其转换为我想要的任何结果?

不幸的是,实体框架是为映射明确(强类型(的POCO类而设计的。

类型的名称和每个映射属性的名称必须相等。

  • 您可以使用这些技术将long转换为int。但这也需要您事先了解列类型
  • 您可以使用此处显示的代码转换为dynamic类型。但与ADO.NET、IMO

相关内容

最新更新