【发布时间】:2016-11-29 19:14:48
【问题描述】:
为EF7 FromSQL解析sql查询获取实体列表。
var accounts = _context.Set<Account>().FromSql("SELECT TOP 10 * FROM Account WITH
(NOLOCK)").ToList();
上面的这个将返回实体列表,但在某些条件下。
var report = _context.Set<AccountReport>().FromSql("SELECT a.Id, a.Username, p.Item,
p.Quantity FROM Account AS a WITH (NOLOCK) INNER JOIN Purchase AS p WITH (NOLOCK) ON
p.AccountId = a.Id WHERE p.CreatedOn BETWEEN '2015-11-01' AND '2015-12-01').ToList();
模型“AccountReport”不是实体模型,会遇到这个错误信息。
错误:
Microsoft.Data.Entity.Metadata.ModelItemNotFoundException' 发生在 EntityFramework.Core.dll 中,但未在用户代码中处理
附加信息:未找到实体类型“AccountReport”。确保实体类型已添加到模型中。
【问题讨论】:
-
您的模型中有 AccountReport 吗?
-
AccountReport 是一个模型,但不是实体模型。这是因为它需要从多个表中聚合一些数据。
-
但如果它不是你模型的一部分,FromSQL 将无法工作
标签: c# sql entity-framework