2010-12-23 42 views
1

我想知道使用SQL Server2005作为数据库开发多用户C#应用程序的最佳方法是什么。这是我想到的:什么是最佳多用户数据库C#应用程序方法?

  1. 使用nhibernate或telerik的openacces orm。
  2. linq
  3. 使用包装。将所有来自表的数据加载到对应的对象中(在启动时),并从该点删除&更新事务将影响数据库。
  4. ...

我看了ORM工具,但在我看来,他们产生了大量的代码,我不知道是否 这是必要的。

考虑到应用程序未来变化的最佳解决方案是什么? 如果我会选择第三个选项我如何确保只有一个用户修改表中的一行(我如何锁定正在修改的表行)? 任何建议或阅读材料将有所帮助! 谢谢!

+0

不确定加载所有数据是一个很好的决定......但它取决于你的数据库大小... – 26071986 2010-12-23 17:22:01

+0

你是什么意思的“linq”?你的意思是“LINQ to SQL”吗?一定要考虑实体框架。 – 2010-12-23 17:29:02

回答

0

节省您自己的工作量和时间,并使用ORM。就帮助你决定哪一个而言,网上有大量的信息/意见(和StackOverflow!)关于哪一个使用,但这取决于你的应用程序要求(你没有描述)。

我喜欢用于小型/中型应用程序的Linq-to-SQL。它快速简单,几乎高效。对于更大的应用程序,它将取决于您想要的数据转换和设计的类型,但Linq-to-Entities或nHibernate可能是最合适的。

1

如果是多用户请不要做#3。 DBMS的目的是为您处理多用户方面的问题。从交易到访问权限的所有内容都内置于其中。沿着模拟代码的方式走下去很难做到正确。过去像Borland的BDE和MS Access这样的一些“引擎”做到了这一点。最终的结果是,您最终只能处理数据损坏和一致性错误等小问题。

不要紧,随着数据库的增长,要花更长的时间才能开始。

由于诸多原因,我们通常远离ORM工具,主要是功能/利益/安全问题。当然,我们非常精通SQL,并且可以利用给定数据库服务器可以提供的特定功能,而大多数ORM无法提供这些功能。我们还倾向于在产品发布后根据性能指标调整查询,这将迫使大多数ORM重新编译应用程序。通过远离这一点,我们可以让生产DBA完成他们的工作。这可能是也可能不是你的问题。

这就是说很多开发团队都喜欢并且成功地使用了你所说的。如果你要走这条路线,我会说跳过Linq-to-SQL转而使用Entity Framework。 Linq-to-SQL几乎都被EF取代。

1

有数百种方法可以解决这个问题,但不要打折ORM。每个版本的微软的Entity Framework都会越来越好。框架4.0位非常好,并且与LINQ一起玩得非常好。

至于生成的代码和你自己的代码,试试类似Entity Spaces ......你可以完全控制代码如何生成,数据访问层是非常强大和灵活的(更不用说非常容易使用)。它也与LINQ很好地搭配。

多年来我写了大量的数据访问代码。最初,ORM工具在边缘很粗糙,留下了许多不足之处。这些工具已经经历了许多次迭代,并且在我看来已经变得不可或缺。我无法想象在执行相同基本CRUD的例程之后编写例程。我这么做了很多年,花了很多时间纠正硬编码的SQL,并且发誓不惜一切代价避免它。

至于并发/锁定问题,这本身就是一个问题。有很多方法可以提供锁定(主要类别是乐观和悲观)。各有其优点和缺点。

相关问题