对于我的一个项目,我正在使用Entity Framework连接到SQL Server数据库。由于诸如(1000-100000)插入/更新/删除之类的大量数据,我不得不使用具有用户定义表类型的存储过程作为参数来提高性能。
此外,这些插入/更新/删除操作还涉及来自其他多个表的数据。因此,我将存储过程与适当的临时表配合使用,并将CTE与连接查询配合使用(这是一个相当复杂的JOIN),以实现所需的结果。
在Entity Framework(存储库模式)中实现相同会造成性能问题。我们也可以从Entity Framework调用存储过程]
现在,我的问题是:在上述情况下哪个更好?
提前感谢。
Udhay
我将避免使用Entity Framework / Entity Framework Core实现存储库模式,因为它已经实现了存储库模式。具体来说,DbContext是您的UoW(工作单元),每个DbSet是存储库。在此之上再加上另一层是多余的,这会使维护更加困难。
关于您的特定问题,如果您所要做的只是调用存储过程,则应该考虑使用Dapper vs. Entity Framework,因为根据底层查询的开销较少,并且可能会有更好的性能。它还将处理将结果映射到强类型的类中。
代码段
using (var connection = new SqlConnection("your connection string"))
{
await connection.OpenAsync();
var results = await connection.QueryAsync<SomeClass>("SomeStoredProc",
new {Param1 = value},
commandType: CommandType.StoredProcedure).ToList();
// ... more code
}