Tutorial LINQ To SQLite
Tutorial LINQ To SQLite
Este tutorial lo gua a travs del proceso de creacin de una aplicacin simple
con tecnologa LinqConnect . En menos de 5 minutos tendr una capa de acceso a datos
lista para usar para sus objetos comerciales.
En este tutorial:
Requisitos
Preparando el Proyecto
Consulta de datos
Actualizacin de datos
Eliminando datos
Informacin Adicional
Requisitos
En este tutorial se supone que ya tiene los objetos de la base de datos
creados. Debe ejecutar un script del siguiente archivo instalado de forma predeterminada
en
\ Archivos de programa \ Devart \ dotConnect \ SQLite \ Samples \ crm_demo.sql.
Preparando el Proyecto
Cree una nueva aplicacin de consola en Visual Studio. Podra ser cualquier otro tipo de
proyecto, pero, por motivos de simplicidad, utilizaremos el proyecto de consola a lo largo
del tutorial. El resto del tutorial asume que el nombre del proyecto
es ConsoleApplication1 . Si su proyecto se nombra de otro modo, tendr que sustituir este
nombre por uno real en el Explorador de soluciones.
4. Elija objetos de base de datos que se usarn en el modelo. Estos son todos los
objetos del script crm_demo, incluidas las tablas auxiliares. Haga clic
en Siguiente .
Consulta de datos
Todas las operaciones de LINQ a SQLite se ejecutan a travs del descendiente de
DataContext, que se denomina CrmDemoDataContext en este tutorial. Para recuperar
datos, primero debe crear una instancia del contexto, luego preparar una consulta
con LinqConnect y luego acceder al objeto devuelto por la consulta, que puede ser una
coleccin de objetos o un solo objeto.
Vamos a leer todos los datos de la tabla de la empresa, ordenarlos por CompanyID y
mostrar algunas columnas. Agregue el siguiente bloque de cdigo al mtodo Main:
C#
CrmDemoDataContext context = new CrmDemoDataContext();
var query = from it in context.Companies
orderby it.CompanyID
select it;
Console.ReadLine();
Visual Basic
Dim context As CrmDemoDataContext = New CrmDemoDataContext
Dim query = From it In context.companies _
Order By it.CompanyID _
Select it
Console.ReadLine()
sencillo como eso. Prepara una consulta y luego itera a travs de ella como lo hara con
una coleccin de objetos habitual. La interaccin de la base de datos es realizada por
LinqConnect en segundo plano. Ahora veamos quin es quin en este ejemplo de cdigo.
propiedades y mtodos de esta clase. Esta clase est diseada para ser ligera y
empresas en el contexto.
C#
CrmDemoDataContext context = new CrmDemoDataContext();
var query = from it in context.Companies
orderby it.CompanyID
select it;
Console.ReadLine();
Visual Basic
Dim context As CrmDemoDataContext = New CrmDemoDataContext
Dim query = From it In context.companies _
Order By it.CompanyID _
Select it
Console.ReadLine()
Como puede ver, la declaracin de consulta de LINQ no se modific en absoluto. Los datos
sobre las personas de contacto se recuperaron de la base de datos automticamente
cuando accedi a la propiedad correspondiente del objeto de la empresa. Esta es una de
las mejores cosas de LINQ: no tiene que preocuparse por las dependencias cuando escribe
consultas.
// Since we query for a single object instead of a collection, we can use the me
thod First()
Product product = query.First();
Console.WriteLine("{0} | {1} | {2}",
product.ProductCategory.CategoryName, product.ProductName, product.Price);
Console.ReadLine();
Visual Basic
Dim context As CrmDemoDataContext = New CrmDemoDataContext
' Create a new category
Dim newCategory As productcategory = New productcategory()
newCategory.CategoryID = 1000
newCategory.CategoryName = "New category"
' Since we query for a single object instead of a collection, we can use the met
hod First()
Dim product As product = query.First()
Console.WriteLine("{0} | {1} | {2}", _
product.productcategory.CategoryName, product.ProductName, product.Price)
Console.ReadLine()
El mtodo InsertOnSubmit () se crea para cada coleccin en el contexto. Este mtodo
almacena en la informacin de la base de datos todos los objetos vinculados. Como se
muestra en el ejemplo, solo es necesario llamar a InsertOnSubmit () una vez para enviar
los objetos del producto y de la categora.
Tenga en cuenta que despus de agregar el nuevo producto y la categora al enviar los
cambios, no puede ejecutar esta solucin nuevamente como es. Para ejecutar la solucin
nuevamente, cambie las identificaciones de los objetos que se agregarn.
Actualizacin de datos
Las instancias de entidad se modifican como de costumbre. Lo nico que hay que recordar
es que debe invocar el mtodo SubmitChanges () para enviar los datos a la base de datos.
Aada el siguiente bloque al cdigo existente e inicie el proyecto:
C#
product.ProductName = "Edited product";
product.Price = 15;
context.SubmitChanges();
Visual Basic
product.ProductName = "Edited product"
product.Price = 15
context.SubmitChanges()
Eliminando datos
Para extraer una instancia de un contexto, use el mtodo DeleteOnSubmit de la coleccin
correspondiente. El objeto se elimina de la coleccin de este tipo, pero no se destruye. Para
eliminar los datos del objeto de la base de datos invoque el mtodo SubmitChanges ().
Puede hacer esto con un bloque de cdigo como el siguiente:
C#
context.products.DeleteOnSubmit(newProduct);
context.productcategories.DeleteOnSubmit(newCategory);
context.SubmitChanges();
Visual Basic
context.products.DeleteOnSubmit(newProduct)
context.productcategories.DeleteOnSubmit(newCategory)
context.SubmitChanges()
Informacin Adicional
Ahora que puede realizar la manipulacin bsica de datos con LinqConnect , puede pasar
a algunos temas avanzados. dotConnect para SQLite incluye una seccin de ayuda
dedicada a la tecnologa LinqConnect. Puede acceder a l en lnea
en https://www.devart.com/linqconnect/docs/ .
LinqConnect se desarrolla estrechamente con la implementacin de LINQ to SQL por parte
de Microsoft, por lo que puede encontrar informacin til en MSDN:
LINQ to SQL
Para la experiencia prctica, utilice muestras enviadas con dotConnect para SQLite. Puede
acceder a las muestras desde el men Inicio.
Para comprender mejor los trabajos del motor LinqConnect, puede ver las sentencias SQL
generadas en dbMonitor o usar la propiedad DataContext.Log.