ASP.NET将类转换为'System.Data.Entity.Infrastructure.DbSqlQuery <project.models.homesclass>'

时间:2016-12-21 20:56:35

标签: c# asp.net entity-framework

我正在使用Entity Framework,我有一个名为HomesClass的类,我在编辑方法中使用了这一行:

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'

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

2 个答案:

答案 0 :(得分:0)

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

您遗失FirstOrDefaultAsync

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

如果你想要一个清单:

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

答案 1 :(得分:-1)

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

可以使用以下选项:

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

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

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