En muchas ocasiones necesitamos lanzar consultas rápidas, para recuperar datos sin importarnos demasiado si reflejan los últimos cambios “commitidos”, es decir, consulta teniendo en cuenta los últimos cambios aunque no se haya llamado a un commit.
Esta sencilla operación la realizamos fácilmente con SQL con una sentencia de este tipo:
“SELECT * FROM RECEPCIONES_CAB WITH(NOLOCK)”
Ahora bien, cuando realizamos una consulta utilizando LINQ To SQL nos encontramos que no existe ninguna palabra reservada o método que nos sirva para realizar este tipo de consultas. Para hacerlo tenemos que abrir una transacción de tipo ReadUncommited y ejecutar la consulta. Por ejemplo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Transactions;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(
object sender,
EventArgs e)
{
using (var ctx = new
DataClasses1DataContext())
{
using (var scope = new TransactionScope
(TransactionScopeOption.Required,
new TransactionOptions() {
IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted
}))
{
ctx.DeferredLoadingEnabled = false;
var dlo = new System.Data.Linq.DataLoadOptions();
dlo.LoadWith<RECEPCIONES_CAB>(r => r.RECEPCIONES_LIN);
dlo.LoadWith<RECEPCIONES_LIN>(r => r.V_PALETS);
ctx.LoadOptions = dlo;
rECEPCIONES_CABBindingSource.DataSource = ctx.RECEPCIONES_CAB.ToList();
}
}
}
}
}

0 comentarios:
Publicar un comentario en la entrada