MAN*_*NGA 2 .net c# linq linq-to-sql
需要有关linq的Dbml文件的建议,我们有大量数据的数据库.有些时候表中有锁.所以我们需要在dbml类上应用隔离级别,读取uncommited(我们知道这个隔离级别的一些缺点).
我在dbml文件中将代码下面的苹果作为分部类
partial class MainDataContext
{
public MainDataContext()
{
base.Connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种正确的实施方式吗?或者对它提出任何拙劣的建议.
谢谢
如果你这样做,你需要将事务附加到该连接上的每个命令,这不是LINQ-to-SQL将要为你做的事情(虽然有办法让它知道一个事务实例).也许有一个选择是使用接受连接的重载,并简单地提供一个已经打开的连接,在该连接上你已经通过以下方式踩踏了隔离级别:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Run Code Online (Sandbox Code Playgroud)
当然,如果你这样做 - 那么现在你的工作是在完成后正确处理连接:LINQ-to-SQL将假设你正在管理连接生命周期.
LINQ-to-SQL数据上下文的另一个选择是使用该ExecuteQuery<T>(sql, args)方法,它允许您传入自己的原始TSQL - 这显然意味着您不再使用LINQ,但它允许您添加NOLOCK等等几乎没有战术意义的地方(只使用物化器的数据上下文).这更精细,并允许您专注于高吞吐量/高度并发的表.
| 归档时间: |
|
| 查看次数: |
3829 次 |
| 最近记录: |