Sql server 如果我所有的sql server数据库访问都是通过存储过程完成的

Sql server 如果我所有的sql server数据库访问都是通过存储过程完成的,sql-server,linq,linq-to-sql,Sql Server,Linq,Linq To Sql,如果我所有的sql server数据库访问都是通过存储过程完成的,并且我计划继续这种做法,那么在未来的项目中使用linq2sql和/或实体框架是否是一种不必要的复杂性,不会增加太多价值 相关问题:微软是否试图引导开发人员不再依赖存储过程进行数据访问 否。LINQ2SQL能够轻松地将数据库实体映射到代码中的类,并使用本机Language构造轻松地处理这些类,因此增加了很多价值。如果需要,可以轻松地将生成的实体类的CRUD操作映射到存储过程中。我确实发现有些事情不再需要存储过程来轻松工作,因此我不再

如果我所有的sql server数据库访问都是通过存储过程完成的,并且我计划继续这种做法,那么在未来的项目中使用linq2sql和/或实体框架是否是一种不必要的复杂性,不会增加太多价值


相关问题:微软是否试图引导开发人员不再依赖存储过程进行数据访问

否。LINQ2SQL能够轻松地将数据库实体映射到代码中的类,并使用本机Language构造轻松地处理这些类,因此增加了很多价值。如果需要,可以轻松地将生成的实体类的CRUD操作映射到存储过程中。我确实发现有些事情不再需要存储过程来轻松工作,因此我不再使用它们,但您并不是被迫这样做的。从本质上讲,LINQ2SQL所能做的就是替换DAL的大部分(如果不是全部的话),从而使您不必编写此代码。

LINQ to SQL支持将大量操作(包括CRUD)映射到存储过程,但您失去了可组合性,即您不能只添加
(exp)。其中(x=>x.IsActive)
。一种选择是使用表值函数(UDF)代替查询数据的存储过程;这也提供了一个更严格的元模型(而不是只在上设置FMT_,这是命中不命中)


这样,您的查询方法在数据库中是可组合的;但请注意,Entity Framework不支持此功能,即使LINQ to SQL也支持此功能。

我也使用Linq2sql来调用存储过程,因为它生成.net代码的速度非常快,我可以从我的应用程序中调用,只需拖放,基本上只需几秒钟。不过,我认为您需要问问自己,维护这些存储过程花了多少时间。如果这样做,那么使用linq2sql进行crud调用将节省大量时间。我仅在对数据库执行多步操作时才使用存储过程。

只是为了解决您的相关问题:使用存储过程的好处并不像以前那样显著。尽管我不会说存储过程是邪恶的,正如一些人在过去所说的那样(尽管这是一篇非常好的文章),但我要说的是,使用动态sql,只要它是以一种定义良好的结构化方式进行的,现在是完全可以接受的


我不认为微软正试图引导开发人员远离使用存储过程,但动态sql应该被视为一个可接受的选项。

您将失去编写Linq查询的能力,这是Linq to sql的最佳部分。

我将表值函数用于搜索或带过滤的浏览。将过滤器参数传递给函数,从表中获取匹配的元素。放在设计器的表上,我得到一个函数,我可以用它来替换绑定控件的数据源。实际上,现在主要做MVC,所以绑定控件的事情是没有意义的,但是你明白了。。。