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();
根据这个问题,如果结果集的第一列是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
我经常使用这种方法,它对我来说非常有效。
在我的情况下,它没有工作,因为我没有字段作为属性。一旦我将字段转换为属性,它就工作得很好。