我想知道使用SQL Server2005作为数据库开发多用户C#应用程序的最佳方法是什么。这就是我的想法:
我看过orm工具,但在我看来他们生成了很多代码,我不知道是否 这是必要的。
考虑到应用程序未来的变化,最佳解决方案是什么? 如果我选择第3个选项,我怎样才能确保只有一个用户修改表中的一行(如何锁定正在修改的表行)? 任何建议或阅读材料都会有所帮助! 谢谢!
答案 0 :(得分:1)
如果是多用户,请不要执行#3。 DBMS的目的是为您处理多用户方面。从事务到访问权限的所有内容都是直接构建的。在代码中模仿它的路径很难做到正确。在过去,像Borland的BDE和MS Access这样的一些“引擎”就是这样做的。最终结果是,您最终会处理数据损坏和一致性错误等小问题。
不要紧,随着数据库的增长,开始时间会呈指数级增长。
出于多种原因,我们通常远离ORM工具,主要是功能/好处/安全问题。当然,我们非常精通SQL,可以利用给定数据库服务器可以提供的特定功能,而大多数ORM都无法做到。我们还倾向于在产品发布后根据性能指标调整查询,这会强制重新编译大多数ORM的应用程序。通过远离这一点,我们可以让生产DBA完成他们的工作。这可能是也可能不是你的担忧。
那说很多开发团队都喜欢并成功使用你所谈到的那些。我想说如果你要走那条路,就跳过Linq-to-SQL而选择Entity Framework。 Linq-to-SQL几乎已被EF取代。
答案 1 :(得分:1)
有数百种方法可以解决这个问题,但不要打折ORM。微软的Entity Framework每次修订都会越来越好。框架4.0位非常好,并且与LINQ非常匹配。
对于生成的代码与您自己的代码,请尝试类似Entity Spaces的内容...您可以完全控制代码的生成方式,并且数据访问层非常强大且灵活(更不用说非常容易使用) )。它也很适合LINQ。
多年来我写了很多数据访问代码。最初,ORM工具在边缘处粗糙并且留下了许多不足之处。这些工具经历了多次迭代,并且在我看来已经变得不可或缺。我无法想象在执行相同基本CRUD的例程之后编写例程。我这么做了很多年,花了很多时间来纠正硬编码的SQL并发誓从现在开始不惜一切代价避免它。
至于并发/锁定问题,这本身就是一个问题。有许多方法可以提供锁定(主要类别是乐观和悲观)。每个都有其优点和缺点。
答案 2 :(得分:0)
节省大量精力和时间并使用ORM。在帮助您确定哪一个方面,Web上有大量的信息/意见(和StackOverflow!)关于哪一个要使用,但这取决于您的应用程序要求(您没有描述)。 / p>
我喜欢Linq-to-SQL用于中小型应用程序。它快速,简单,几乎高效。对于更大的应用程序,它将取决于您所考虑的数据转换和设计类型,但Linq-to-Entities或nHibernate可能是最合适的。