【问题标题】:Different C# apps accessing database through Linq to Entities不同的 C# 应用程序通过 Linq to Entities 访问数据库
【发布时间】:2011-09-15 10:43:31
【问题描述】:

我有一个 C# 控制台应用程序,它进行一些处理,然后写入数据库。我将它部署在具有不同配置设置的服务器上多次执行略有不同的事情。但是,它们都必须使用 Linq to Entities 写入同一个数据库(并且可能需要将相同的数据插入到同一个表中,如果它尚不存在)。

如果我使用线程,我可以锁定方法或存储过程,我可以将写入排队以避免冲突,但是有没有办法将它们保持为单独的应用程序,并防止它们都尝试将相同的东西写入同时数据库?

当发生冲突时,我经常遇到异常。

编辑:

我不一定要调试为什么会出现异常,而是更多地寻找有关“最佳实践”方式的任何建议,例如这应该在控制台应用程序级别、L2E 级别还是数据库级别进行处理。

【问题讨论】:

  • 获得...?例外?它说什么?
  • 目前它隐藏在一些友好的错误文本中:) 我会尝试找出确切的错误消息
  • @Ilya Smagin - 它的 Linq to Entities 不是 Linq to SQL...
  • @Ilya:这是一个绝望的评论。 OP 声明 l2e not linq2sql。此外,毫无根据的笼统评论比毫无意义更糟糕。支持自己或不要打扰发布。我们正在使用 linq2sql 运行一个每月拥有超过 100 万个独立用户的网站,所以我很想知道您为什么认为它如此虚假。
  • @spender, code.google.com/p/dapper-dot-net 这是不同 ORM 之间的性能比较。 Drapper-net 是 StackOverflow 编写和使用的。猜猜他们为什么放弃 Linq?是的,性能。除了。我自己不喜欢 l2sql、ef、l2e,因为它们都在后台处理大量工作,这导致调试困难和不明显的限制和解决方法。这是我的个人观点,这就是为什么它是评论而不是答案。

标签: c# transactions linq-to-entities console-application


【解决方案1】:

为什么不能启动高隔离级别的事务,让锁在服务器端处于活动状态?

【讨论】:

    【解决方案2】:

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

    这是一个非常广泛的话题,所以我建议你从谷歌搜索数据库并发开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多