C# 如何使用linq(WPF项目)避免sql字符串

C# 如何使用linq(WPF项目)避免sql字符串,c#,sql-server,wpf,linq,mvvm,C#,Sql Server,Wpf,Linq,Mvvm,我正在为一个更大的系统的一部分开发一个应用程序,它在SQL Server之上使用Microsoft WPF 这是一个大学高年级项目,出于投资组合的原因,我希望事情尽可能成为“最佳实践”。我知道MVVM是构建WPF应用程序本身的方法 此外,我对利用LINQ而不是“SQL查询字符串”方法进行数据操作和检索很感兴趣,但是我感到相当沮丧,因为我似乎无法直接回答如何正确操作(或者这是否是最佳实践) 我发现了一个很有前途的教程,但是它要求使用Linq到SQL来创建对象关系,我认为这是不推荐的,并且在VS20

我正在为一个更大的系统的一部分开发一个应用程序,它在SQL Server之上使用Microsoft WPF

这是一个大学高年级项目,出于投资组合的原因,我希望事情尽可能成为“最佳实践”。我知道MVVM是构建WPF应用程序本身的方法

此外,我对利用LINQ而不是“SQL查询字符串”方法进行数据操作和检索很感兴趣,但是我感到相当沮丧,因为我似乎无法直接回答如何正确操作(或者这是否是最佳实践)

我发现了一个很有前途的教程,但是它要求使用Linq到SQL来创建对象关系,我认为这是不推荐的,并且在VS2017中不可用。我发现了一个过时的教程,该教程使用ADO.NET编写(~2010年),但它给了我一些问题


我应该坚持使用“SQL查询字符串”的方法吗?

最佳实践?不要使用LINQtoSQL。我并不反对简化小型学生项目的想法,但尽管它简化了事情,但它给DBA在现实世界中带来了噩梦。实体框架也可能导致这种令人心痛的情况,但有一些方法可以解决它

如果通过“SQL查询字符串”的方式进行操作,例如编码SQL查询字符串并从代码发送到数据库。如果事情可以预测的话,这是可行的。但是,如果你太有活力,你只需要重复DBA的噩梦

我将查找存储库模式并学习如何创建存储库。虽然在现实世界中您可能不必总是这样做,但这是学习抽象的一个很好的练习。对于可能需要进行大量连接的项目,请考虑检查视图的创建并建立一些存储过程。当你离开教室出差时,所有这些都将为你服务


作为一点琐事,LinqtoSQL是在反应式扩展之上编写的一个实验(EricMaier在微软工作时没有抨击敏捷)。如果不是SQL Server因为与Visual Studio 2008的联合发布而被延迟,它可能永远不会发布。SQL Server的延迟意味着实体框架的延迟,这意味着“在15分钟内构建一个站点”的演讲已经结束。因此,LINQ to SQL成为了事实上的“标准”,各地的DBA都开始带着枪工作(好吧,最后一部分不是真的,但其余部分是真的)。

您可以使用c#中的实体框架来实现这一点

  • 将数据库的实体模型添加到应用程序中
  • 然后在要调用数据的类中创建一个对象

    <your-entities> context = new <your-entities>();
    

    我建议使用Fantastic,存储库模式看起来非常有用,一些工作肯定可以通过视图和存储过程来完成。实体模型似乎是最好的方法,存储库模式似乎也很棒,但我没有时间。
    var select = from a in context.<table-name>.IEnumerable() select a;
    
     foreach(var item in select){
    
     }