我需要在数据库上执行运行时定义的SQL查询,并在数据网格上显示结果。 我使用此代码查询数据库。它应该返回一个IEnumerable运行时定义的customType
对象List<dynamic> result;
using (context = new DataContext(ConnStr))
{
IEnumerable enumerable = context.ExecuteQuery(customType, query);
result = enumerable.Cast<dynamic>().ToList();
}
示例customType和Query I使用如下
CustomType:CustomType是在运行时创建的,它等同于:
class customType
{
public int Id {get; set;}
}
查询:
Select id from TestTable
ExecuteQuery返回的是所有id为0的customType对象列表。 我使用context.ExecuteQuery做了同样的事情,这次我在编译时定义了我的customType(&lt;&gt;运算符不能与Type实例一起使用),并且它按预期工作并返回合法ID列表。 我检查了msdn页面,找到了这个有趣的描述:
公共方法 ExecuteQuery(String,Object [])执行SQL 直接在数据库上查询并返回对象。
公共方法 ExecuteQuery(Type,String,Object [])直接执行SQL查询 数据库。
感谢任何帮助。
更新: 我的SQL Server数据库中的TestTable定义:
CREATE TABLE [dbo].[TestTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[StartDate] [datetime] NOT NULL,
[BasePath] [varchar](512) NOT NULL,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
(如果有任何语法错误,那就是错字)