📅  最后修改于: 2023-12-03 14:40:38.773000             🧑  作者: Mango
在 Entity Framework 中,使用 db.Database.SqlQuery
可以执行原生 SQL 查询,而不必将其映射到实体类。
IEnumerable<TEntity> db.Database.SqlQuery<TEntity>(string sql, params object[] parameters)
其中:
TEntity
:查询结果要映射到的实体类类型。sql
:原生 SQL 查询语句。parameters
:可选的查询参数。查询返回的结果类型为 IEnumerable<TEntity>
,需要手动将其映射到实体类中,例如:
string sql = "SELECT * FROM Customers WHERE Country = @p0 AND City = @p1";
object[] parameters = new object[] { "USA", "New York" };
IEnumerable<Customer> results = db.Database.SqlQuery<Customer>(sql, parameters);
foreach (var customer in results)
{
Console.WriteLine(customer.Name);
}
db.Database.SqlQuery
查询时,不能使用延迟加载(LazyLoadingEnabled
)和代理生成(ProxyCreationEnabled
)。@p0
形式的占位符参数,与 parameters
数组中的元素一一对应。使用 Entity Framework 的 db.Database.SqlQuery
可以快速方便地执行原生 SQL 查询,并将结果映射到实体类中,但也需要注意一些使用细节和风险。