Compartir vía


Qué puede hacer con LINQ to SQL

LINQ to SQL admite todas las funcionalidades clave que cabría esperar como desarrollador de SQL. Puede consultar información e insertar, actualizar y eliminar información de tablas.

Seleccionar

La selección (proyección) se logra mediante la escritura de una consulta LINQ en su propio lenguaje de programación y, a continuación, la ejecución de esa consulta para recuperar los resultados. LINQ to SQL traduce todas las operaciones necesarias en las operaciones SQL necesarias con las que está familiarizado. Para obtener más información, consulte LINQ to SQL.

En el ejemplo siguiente, los nombres de empresa de los clientes de Londres se recuperan y muestran en la ventana de la consola.

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");

var companyNameQuery =
    from cust in nw.Customers
    where cust.City == "London"
    select cust.CompanyName;

foreach (var customer in companyNameQuery)
{
    Console.WriteLine(customer);
}
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")
' or, if you are not using SQL Server Express
' Dim nw As New Northwnd("Database=Northwind;Server=dschwart7;Integrated Security=SSPI")

Dim companyNameQuery = _
    From cust In nw.Customers _
    Where cust.City = "London" _
    Select cust.CompanyName

For Each customer In companyNameQuery
    Console.WriteLine(customer)
Next

Inserción

Para ejecutar un SQLInsert, basta con agregar objetos al modelo de objetos que ha creado y llamar a SubmitChanges sobre el DataContext.

En el ejemplo siguiente, se agrega un nuevo cliente e información sobre el cliente a la Customers tabla mediante InsertOnSubmit.

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");

Customer cust = new Customer();
cust.CompanyName = "SomeCompany";
cust.City = "London";
cust.CustomerID = "98128";
cust.PostalCode = "55555";
cust.Phone = "555-555-5555";
nw.Customers.InsertOnSubmit(cust);

// At this point, the new Customer object is added in the object model.
// In LINQ to SQL, the change is not sent to the database until
// SubmitChanges is called.
nw.SubmitChanges();
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")

Dim cust As New Customer With {.CompanyName = "SomeCompany", _
    .City = "London", _
    .CustomerID = 98128, _
    .PostalCode = 55555, .Phone = "555-555-5555"}
nw.Customers.InsertOnSubmit(cust)
' At this point, the new Customer object is added in the object model.
' In LINQ to SQL, the change is not sent to the database until
' SubmitChanges is called.
nw.SubmitChanges()

Actualización

Para Update una entrada en la base de datos, primero recupere el elemento y edítelo directamente en el modelo de objeto. Después de haber modificado el objeto, llame a SubmitChanges en DataContext para actualizar la base de datos.

En el ejemplo siguiente, se recuperan todos los clientes que proceden de Londres. A continuación, el nombre de la ciudad se cambia de "Londres" a "Londres - Metro". Por último, se llama a SubmitChanges para enviar los cambios a la base de datos.

Northwnd nw = new Northwnd(@"northwnd.mdf");

var cityNameQuery =
    from cust in nw.Customers
    where cust.City.Contains("London")
    select cust;

foreach (var customer in cityNameQuery)
{
    if (customer.City == "London")
    {
        customer.City = "London - Metro";
    }
}
nw.SubmitChanges();
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim cityNameQuery = _
    From cust In nw.Customers _
    Where cust.City.Contains("London") _
    Select cust

For Each customer In cityNameQuery
    If customer.City = "London" Then
        customer.City = "London - Metro"
    End If
Next
nw.SubmitChanges()

Eliminando

Para realizar una operación Delete en un elemento, quite el elemento de la colección a la que pertenece y, a continuación, llame al método SubmitChanges en DataContext para confirmar el cambio.

Nota:

LINQ to SQL no reconoce las operaciones de eliminación en cascada. Si desea eliminar una fila de una tabla que tiene restricciones en ella, vea Cómo: Eliminar filas de la base de datos.

En el ejemplo siguiente, se recupera el cliente cuyo CustomerID es 98128 de la base de datos. A continuación, después de confirmar que se recuperó la fila del cliente, se llama a DeleteOnSubmit para quitar ese objeto de la colección. Por último, se llama a SubmitChanges para reenviar la eliminación a la base de datos.

Northwnd nw = new Northwnd(@"northwnd.mdf");
var deleteIndivCust =
    from cust in nw.Customers
    where cust.CustomerID == "98128"
    select cust;

if (deleteIndivCust.Count() > 0)
{
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
    nw.SubmitChanges();
}
Dim nw As New Northwnd("c:\northwnd.mdf")
Dim deleteIndivCust = _
    From cust In nw.Customers _
    Where cust.CustomerID = 98128 _
    Select cust

If deleteIndivCust.Count > 0 Then
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First)
    nw.SubmitChanges()
End If

Consulte también