我是新来ASP.Net核心(但不是ASP.Net),我想知道什么访问现有的SQL Server数据库的最佳途径?ASP.Net核心 - 访问数据库的最佳实践?
我跟着一些PluralSight教程,但他们似乎都使用Code First方法。
微软确实有some example code显示如何访问现有的数据库。
我问这个问题的原因是我们公司聘请了一家外部公司为我们编写一些代码,他们的解决方案是通过存储过程执行数据库CRUD操作的所有全部。
所以,在SQL Server中,他们已经基本上在3个存储过程的每一个应用程序使用的表,例如:
dbo.CustomerGet
dbo.CustomerDelete
dbo.CustomerUpdate
而且他们的ASP.Net核心代码只包含负载小功能,像这样:
public IEnumerable<Order> GetCustomerOrders(int customerID)
{
var itemsParams = new Dictionary<string, object>()
{
{ "@CustomerID", customerID}
};
var items = _dataAccess.GetData("dbo.CustomerOrdersGet", itemsParams,
reader => new Order()
{
OrderID = reader.GetInt32(0),
OrderName = reader.GetString(1),
// ...etc...
});
return items;
}
的GetData()
功能只是创建到数据库的新连接,并调用存储过程:
public IEnumerable<T> GetData<T>(string storedProcedureName, Dictionary<string, object> parameters)
{
using (var conn = new SqlConnection(_connectionString))
{
conn.Open();
return conn.Query<T>(storedProcedureName, parameters, commandType: CommandType.StoredProcedure);
}
}
他们的代码在任何地方都没有提及DbContext
。
他们的一些SP也只能做一个SELECT,但他们只需要一个PageNumber和PageSize参数,为网页获取一页数据,再加上一个“SortBy”参数。
再一次,在“我的世界”中,通过可管理的数据大小,我总是一次加载所有数据,并让客户端在显示结果页面后处理并处理排序。
我知道StackOverflow并不是问“你的意见是什么......”的理想场所吗?输入问题,但我会很感激一些反馈。
这是一个真正的技术问题,这将是其他开发商,特别是考虑到ASP.Net核心如何利用新的(和不断变化)是非常有用的。
我从来没有用“普通”ASP.Net编写这样的代码,并且想知道ASP.Net Core开发人员对这种编码方法的看法。 (顺便说一句,我对存储过程非常舒服,我在内部应用程序中使用它们很多,但只是在数据密集型操作中,或者当我不希望大数据集被传递时大约在我的SQL Server和ASP.Net代码之间,而且我从来没有使用过存储过程,例如,在一个表上执行一个bog标准的SELECT。)
这与'ASP.NET Core'无关,我的意思是在其他使用其他框架和编程语言的应用程序中发生了同样的情况。 – Fabio
无论哪种方式都是可行的。两者都有其优点和缺点。你说得对,SO *不是那个网站。 –