我正在使用LINQ SqlQuery<>
进行运行时sql查询并从数据库获取数据SchoolSoulLibrary.SchoolSoulDataEntities ss = new SchoolSoulLibrary.SchoolSoulDataEntities();
string query1;
var li = ss.Database.SqlQuery<MasterBank>(query1).ToList();
MasterBank类是
public Partial class MasterBank
{
public MasterBank()
{
}
public decimal BankId { get; set; }
public string BankName { get; set; }
public Nullable<decimal> UserId { get; set; }
public Nullable<decimal> SchoolId { get; set; }
}
如果我正在执行此查询
query1 = "Select * from MasterBank"; or
query1 = "Select BankId,BankName,UserId ,SchoolId from MasterBank";
它没有给出任何错误并返回所有数据
但如果我正在执行此查询
query1 = "Select BankName,SchoolId from MasterBank";
发生错误
我理解这个错误的原因是它返回MasterBank类的类型的结果,但我现在可以做什么因为query1正在生成运行时具有类MasterBank属性的随机数。
有没有其他选择,而不是 SqlQuery&lt;&gt;
你好好建议
答案 0 :(得分:2)
所有可选的字段都需要在MasterBank类中标记为可选(可为空)。
这个不应该导致任何问题:
query1 = "Select BankId ,SchoolId from MasterBank";
所以最快的解决方法就是让所有字段都可以为空。
答案 1 :(得分:0)
修改强>
我最初的答案是离开...
我认为您需要使用的类型来匹配您期望的结果。因此,定义一个与您的查询匹配的新类型:
class SomeClass
{
public string BankName {get;set;}
public int SchoolId {get;set;}
}
SchoolSoulLibrary.SchoolSoulDataEntities ss = new SchoolSoulLibrary.SchoolSoulDataEntities();
string query1;
var li = ss.Database.SqlQuery<SomeClass>(query1).ToList();
如果您在运行时之前不知道将返回哪些字段 - 请考虑使用数据集而不是实体框架或尝试这样的事情:
http://www.codeproject.com/Articles/206416/Use-dynamic-type-in-Entity-Framework-4-1-SqlQuery