0

我正在使用 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<>
之外,还有其他选择吗?请建议

4

2 回答 2

2

所有可选的字段都需要在 MasterBank 类中标记为可选(可为空)。

这不应该引起任何问题:

query1 = "Select BankId ,SchoolId  from MasterBank";

所以最快的解决方法就是让你的所有字段都可以为空。

于 2013-11-13T11:55:55.400 回答
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

于 2013-11-13T11:48:33.200 回答