LINQ SqlQuery <t>随机选择的字段数</t>

时间:2013-11-13 11:44:09

标签: c# sql linq runtime

我正在使用LINQ SqlQuery&lt;&gt;

进行运行时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; 你好好建议

2 个答案:

答案 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