sqlquery返回一些空对象

本文关键字:对象 返回 sqlquery | 更新日期: 2023-09-27 18:10:21

使用Entity Framework 6,下面的代码查询一个表(实际上是一个视图)并返回一些行数。行数是正确的,但许多行是空的,即一些Licenses对象是空的,如在Visual Studio Watch窗口中所见。我认为发生的是,如果视图中给定行的任何列包含null,那么整个行被设置为null。关于如何获得所有正确的数据有什么想法吗?

String query = "select * from dbo.v_Licenses where [Number] like '%ab%'";
System.Data.Entity.Infrastructure.DbRawSqlQuery<Licenses> dbRawSqlQuery = db.Database.SqlQuery<Licenses>(query);
Queryable<Licenses> licenses = dbRawSqlQuery.AsQueryable();

sqlquery返回一些空对象

根据这个问题,如果结果集的第一列是null,那么EF(至少在一个点上)似乎返回了null对象。因此,与其选择*,不如显式地命名列,并确保PK(或其他列)位于首位。

请确保许可证属性的名称与从选择中获取的列相同,并且属性类型也相同。

:

Select CustomerId,Firstname from Customers
public class Customer
{
      public int CustomerId{get;set;}
      public string Firstname {get;set;}
}

并将System.Data.Entity.Infrastructure.DbRawSqlQuery更改为List

我经常使用这种方法,它对我来说非常有效。

在我的情况下,它没有工作,因为我没有字段作为属性。一旦我将字段转换为属性,它就工作得很好。