我正准备启动一个C#Web应用程序项目,只是想从数据库中提取数据。据我所知,我可以使用C#代码从我的Web应用程序后面的代码(即LINQ)访问数据库,或者我可以调用一个存储过程来收集所有数据,然后用几行读取它我的代码背后的代码。我很想知道这两种方法中的哪一种,或任何其他方法,将是最有效,优雅,面向未来且最容易测试的方法。
答案 0 :(得分:2)
编写应用程序的最具前瞻性的方法是在您和数据库之间进行抽象。要做到这一点,你会想要使用某种ORM。我建议使用NHibernate或Entity Framework。
这样可以让您只需编写一次查询而不是多次(例如:如果您决定更改数据库“从mssql移动到mysql,反之亦然”)。这也为您提供了将所有数据都放在对象中的优势。这比原始的数据表或数据读取器更容易使用。
答案 1 :(得分:1)
大多数开发人员喜欢在后面的代码和数据库之间引入至少一个层。
此外,人们在该层中使用了许多数据访问策略。 ADO.NET,实体框架,企业库NHibernate,Linq等。
在所有这些中,您可以使用SQL查询或存储过程。我更喜欢存储过程,因为它们很容易编写和部署。其他人更喜欢使用参数化查询。
当你有这么多选择时,它通常表明确实没有明显的赢家。这意味着你可以选择一个方向然后继续使用它你会没事的。
但你真的不应该使用非参数化的查询,你不应该在后面的代码中进行,而是在单独的类中
答案 2 :(得分:1)
使用LINQ to SQL访问数据可能是目前最糟糕的选择。微软已经表示,他们将不再改进LINQ to SQL,转而采用Entity Framework。此外,如果你选择走这条路,你可以在你的EF上使用LINQ。
我建议使用ORM,如nHibernate或Entity框架,而不是sproc / ADO方法。在这两个ORM之间,我可能会建议您使用EF,只需要掌握它。 EF不像nHibernate那样强大,但它的学习曲线更短,非常强大。