用Linq to Entities实现不同的C#应用程序访问数据库

3
我有一个C#控制台应用程序,它执行一些处理然后写入数据库。我在服务器上多次部署了该应用程序,并使用不同的配置设置来完成略微不同的任务。但是,它们都必须使用Linq to Entities将数据写入相同的数据库(如果尚不存在,则可能需要将相同的数据插入到相同的表中)。
如果我使用线程,我可以锁定该方法,或者使用存储过程,我可以排队写入以避免冲突,但是否有任何方法可以保持这些应用程序分开,并防止它们同时尝试将相同的内容写入数据库?
有时会发生异常。
编辑:
我不一定要调试为什么出现异常,更多地寻求任何最佳实践的建议,例如:这应该在控制台应用程序级别、L2E级别还是数据库级别处理。

2
获取一个...?异常?它说了什么? - spender
目前它被隐藏在一些友好的错误文本中:)我会尝试找出确切的错误消息。 - finoutlook
1
@Ilya Smagin - 这是Linq to Entities而不是Linq to SQL... - finoutlook
2
@Ilya:这是毫无希望的评论。OP指出的是l2e,而不是linq2sql。此外,没有理由的笼统评论比毫无意义更糟糕。支持你的观点或者就不要发帖了。我们正在运行一个拥有超过100万独立访客/月的网站,使用的是linq2sql,所以我很想知道你为什么认为它如此虚假。 - spender
1
@spender,http://code.google.com/p/dapper-dot-net/ 这里有一个不同ORM之间的性能比较。Drapper-net是StackOverflow编写和使用的ORM。猜猜他们为什么放弃了Linq?是的,性能问题。此外,我个人也不喜欢l2sql、ef、l2e,因为它们都在后台处理太多工作,导致调试困难,限制和解决方法不明显。这是我的个人观点,所以这只是一条评论而不是答案。 - Ilya Smagin
好的,我认为我使用的ORM不是这个问题的关键 - 你可以在我的问题中随时用'dapper-dot-net'替换我说过'Linq to Entities'的任何地方,但处理事务的问题仍然存在。 - finoutlook
2个回答

3

为什么不能使用高隔离级别启动事务,以便在服务器端保持锁定状态?


2

您可以使用(悲观并发模型)时间戳(乐观并发模型)来处理并发问题。

这是一个非常广泛的主题,因此建议您开始通过谷歌搜索数据库并发性来了解更多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接