繁体   English   中英

ASP.NET将类转换为&#39;System.Data.Entity.Infrastructure.DbSqlQuery <Project.Models.HomesClass> &#39;

[英]ASP.NET Convert Class to 'System.Data.Entity.Infrastructure.DbSqlQuery<Project.Models.HomesClass>'

我正在使用Entity Framework,并且有一个名为HomesClass的类,并且在我的edit方法中有以下代码行:

HomesClass homesClass = db.Data.Find(id);

所以我尝试做这样的另一行

HomesClass homesClass = db.Data.SqlQuery("SELECT ....");

但是然后我得到这个错误:

Cannot implicitly convert type 'System.Data.Entity.Infrastructure.DbSqlQuery<Project.Models.HomesClass>' to ‘Project.Models.HomesClass'

我的问题是如何正确转换此格式?

您的原始代码失败,因为db.Data.SqlQuery("SELECT ....")转换为DbSqlQuery类型的实例,该实例与您的HomesClass类型HomesClass
DbSqlQuery的实例只是保存查询的对象,而不是执行查询的结果。
您需要执行查询,以便将结果转换为实际包含您要获取的数据的对象。 您可以通过在要求它执行查询的DbSqlQuery实例上调用方法来执行查询。

您缺少FirstOrDefaultAsync

HomesClass homesClass = await db.Data.SqlQuery("SELECT ....").FirstOrDefaultAsync();

如果您想要一个列表:

List<HomesClass> result = await db.Data.SqlQuery("SELECT ....").ToListAsync();

您需要将一种类型转换为另一种类型。

可以使用以下选项:

  1. 隐式/显式转换运算符。

  2. 编写扩展方法以将OneType转换为另一个。

  3. 使用第三方库,例如AutoMapper

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM