C# 数据访问最佳做法

C# 数据访问最佳做法,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我的Asp.Net核心应用程序中有不同的模型。是否建议在IActionResult操作方法中执行SQL查询?或者让一个单独的类来完成每个模型的数据获取工作,并将结果返回到IActionResult方法,在那里我们可以显示returnview()? 我有一个静态实用程序类。如果每个模型都有一个类来获取数据,我需要访问IHttpContextAccessor,但我不能在静态类中分配它。什么类型的类是最佳选择?您可以选择repository模式(),添加通用存储库(一个类)或具体存储库(每个模型一个)

我的Asp.Net核心应用程序中有不同的模型。是否建议在
IActionResult
操作方法中执行
SQL
查询?或者让一个单独的类来完成每个模型的数据获取工作,并将结果返回到
IActionResult
方法,在那里我们可以显示
returnview()

我有一个静态实用程序类。如果每个模型都有一个类来获取数据,我需要访问
IHttpContextAccessor
,但我不能在静态类中分配它。什么类型的类是最佳选择?

您可以选择repository模式(),添加通用存储库(一个类)或具体存储库(每个模型一个)。 另一种解决方案是使用分部类,在模型类中添加数据访问逻辑。 例如:

public partial class MyModel
{
    public string Name { get; set; }
}

public partial class MyModel
{
    //add data access here
}

此外,为了识别它们,您可以向模型类文件添加扩展名,如“.cs.da”(然后您将有“MyModel.cs”和“MyModel.cs.da”文件),并使用文件嵌套扩展名对它们进行嵌套:

就像软件开发中的许多事情一样。。。“视情况而定”。通常,什么类型的类用于SQL查询,读取数据并将其放入模型中,然后将该模型返回给调用它的方法?我可以用静态类来实现,但有时我需要HttpContext来进行SQL查询,而在静态类中我无法访问它。实际上,对于一个小项目,我建议使用Entity Framerwork Core。创建一个名为Data的文件夹,并将现有数据库构建到该文件夹中。然后,您可以使用DependencyInjection将上下文的实例注入每个控制器,然后使用linq查询您的数据?Entity framework是一种基于状态的方法,只有实例类(除了一些向某些内容添加一些扩展方法的静态类),如果您使用的是.NET Core/ASP.NET Core,那么Entity framework Core实际上是数据访问的推荐方式。看看这个教程-谢谢你的帮助。对于从数据库获取用户信息这样的简单操作,建议采用什么模式?该方法应该获取一个参数并调出
UserID
,还是直接从
session
获取
UserID
?如果您想使用类似我的第二种方法,那么应该使用DAO或类似的方法()。然后,关于最后一个问题:最好的做法是使数据访问方法“业务逻辑不可知”。这是因为您不想将其耦合到会话对象,所以最好的方法是让数据访问方法获取用户ID,甚至不知道会话对象。然后,您将在控制器内部连接东西,在那个里您从会话中获取用户ID,并将其传递给DAO对象。