LINQ to SQLite 教程

本教程将引导您通过创建一个简单的应用技术支持LINQ to SQL技术。在不到5分钟,您将有随时可以使用的数据访问层为您的业务对象

示例介绍目录如下:
介绍了LINQ to SQL技术
要求
编写项目
从数据库生成模型
查询数据
插入新数据
更新数据
删除数据
其他信息


介绍了LINQ to SQL技术
LINQ主张语言综合查询,这意味着数据检索已不再是一个独立的语言。 LINQ引擎允许的。 NET应用程序连接到数据库困扰许多关于列和行。您收到的数据是自动生成的对象准备使用你的业务逻辑。
LINQ to Relational Data 可能会被认为是一个对象关系映射(ORM)的工具。该类型安全LINQ查询得到汇编成MSIL的执行,以及查询的条款翻译成SQL和送交的SQLite数据库执行。这使得您的数据访问层安全,更快捷,更方便大大设计。

要求 :
为了连接到你需要的SQLite数据库服务器本身的运行,为的SQLite dotConnect安装和IDE运行。 LINQ到SQL需要的。 NET Framework 3.5和Visual Studio 2008 ,和的SQLite数据库3或更高版本。请注意:LINQ to SQLite功能仅适用于专业版的SQLite的dotConnect的。
在本教程假定您已经拥有的数据库对象创建。你必须执行一个脚本从下列文件如果您尚未这样做:

编写项目
创建一个新的控制台应用程序在Visual Studio 。它可以是任何其他项目类型的,但是为了简单起见我们将使用控制台项目整个教程。其余的教程假定该项目的名称是ConsoleApplication1 。如果您的项目被命名否则,你将不得不替代这个名字与实际的解决方案资源管理器。

 
1、从数据库生成模型
添加Devart LINQ to SQL Model模型项目。为此,右键单击引用节点在解决方案资源管理器,指向添加,单击新建项目....在添加新项目对话框中选择数据,选择Devart LINQ to SQL范本,并单击添加。这将自动发射实体开发,修改和保存该示范项目。

vsadditem.gif

 

2、主菜单中的实体开发,选择文件|创建数据库。这发射数据库逆向工程向导。
3、单击下一步在欢迎屏幕上。由于这种情况的实体开发调用从Visual Studio的LINQ to SQL模式,选择的框架中禁用此画面。
4、填写连接设置,然后单击下一步。

eddrew1.gif

5、选择数据库对象将用于模型。所有这些物件从crm_demo脚本,包括辅助表。单击下一步。

eddrew2.gif

6、在下一屏幕上您可以调整命名规则的实体及其成员。为客户演示数据库没有规则的要求,因此只需单击下一步。

eddrew3a.gif

7、输入CrmDemoData的名字空间,并CrmDemoDataContext的名称DataContext之后。这将是名称的主要数据访问类。单击下一步。

eddrew3.gif

8、点击下一步完成。并生成代码模型是开放emd设计框架代码。
9、在主菜单上,单击文件|保存项目。这将更新DataContext1模型在Visual Studio 。
该模型您刚刚产生准备使用。您可以检查它的实体开发视觉与图和toolwindows ,编辑的各个方面的课程和关系,添加新的模型元素。请记住,您保存该项目,使开发实体的变化反映在Visual Studio 。

eddiagram.gif

该向导创建的所有选定的课程表,代表实体。它还建立了一个System.Data.Linq.DataContext,它控制的连接到数据库,整个数据流。这个类包含的属性和方法的命名数据库对象。您将使用这些成员检索和修改数据的范畴。这些代码包含在该文件DataContext.cs ( DataContext.vb ) 。

查询数据
所有LINQ to SQLite的操作,可以以执行通过DataContext,这是命名CrmDemoDataContext本指南中。撷取资料,你必须首先创建一个实例的情况下,然后编写查询LINQ to SQL ,然后访问该对象返回的查询,这可能是一个收集的对象或一个对象。
让我们看所有的数据从表公司,排序它CompanyID ,输出一些列。添加以下代码块的方法主要:

[C#] cs

CrmDemoDataContext context = new CrmDemoDataContext();
var query = from it in context.Companies
            orderby it.CompanyID
            select it;

foreach (Company comp in query)
  Console.WriteLine("{0} | {1} | {2}", comp.CompanyID, comp.CompanyName, comp.Country);

Console.ReadLine();
 

[Visual Basic] vb

Dim context As CrmDemoDataContext = New CrmDemoDataContext
Dim query = From it In context.companies _
    Order By it.CompanyID _
    Select it

Dim comp As company
For Each comp In query
    Console.WriteLine("{0} | {1} | {2}", comp.CompanyID, comp.CompanyName, comp.Country)
Next

Console.ReadLine()

就这么简单。您的查询语句,然后迭代通过它你会做一个平常收集的对象。该数据库的互动是由LINQ to SQLite的背景。现在让我们看看谁是谁在此代码示例。

 
通过CrmDemoDataContext的名字是内容可以知道所有关于您的模型架构,及其一切处理操作。所有LINQ to SQLite的操作,以履行在这一类的属性和方法。建议您保留一个实例的整个您的申请,因为它消耗大量的资源,和实体不得通过不同的数据共享环境。
查询,它是任意的变量名称中的LINQ to SQL语句。前者是用于收集数据的对象,后者则是没有使用以外的声明。
context.Companies指的是公共财产, CrmDemoDataContext上下文。这个属性代表了收集的所有数据的范畴。
公司(在foreach声明)的名字是一个产品和一流的。这个类映射到表中的公司的数据库和它的名字来自于它。
以下是该项目的产量在控制台:

EFTutorialOutput.gif

请注意:LINQ to SQL查询代码只是描述了查询。它不执行。这种做法被称为推迟执行。
现在让我们来查询数据从两个表美国与外国的关键。取代旧的代码如下:

[C#]

CrmDemoDataContext context = new CrmDemoDataContext();
var query = from it in context.Companies
            orderby it.CompanyID
            select it;
foreach (Company comp in query) {
  if (comp.PersonContacts.Count > 0) {
    Console.WriteLine("{0} | {1} | {2}",
      comp.CompanyName, comp.PersonContacts[0].FirstName,
      comp.PersonContacts[0].LastName);
  }
}
Console.ReadLine();

[Visual Basic]

Dim context As CrmDemoDataContext = New CrmDemoDataContext
Dim query = From it In context.companies _
    Order By it.CompanyID _
    Select it
Dim comp As company
For Each comp In query
    If comp.personcontacts.Count > 0 Then
        Console.WriteLine("{0} | {1} | {2}", _
              comp.CompanyName, comp.personcontacts(0).FirstName, _
              comp.personcontacts(0).LastName)
    End If
Next
Console.ReadLine()

正如你所看到的, LINQ to SQL查询声明没有改变。这些数据的联络人是取自数据库时会自动进入相应的财产,该控制的对象。这是一个伟大的事情LINQ到SQL :您不必担心相依写作时查询。

插入新数据
什么是增加早些时候行表,现在仅仅是增加了新的对象范围内集合。当您准备好发送到数据库的变化,呼吁SubmitChanges ( )方法的范围内。在此之前,你首先必须将所有属性,不支持空(没有)的价值。该SubmitChanges ( )方法生成和执行命令,执行相当于INSERT , UPDATE或DELETE语句对数据源。
让我们添加一个新产品和新的一类数据库。取代旧的代码如下:

[C#]

CrmDemoDataContext context = new CrmDemoDataContext();
// Create a new category
ProductCategory newCategory = new ProductCategory();
newCategory.CategoryID = 1000;
newCategory.CategoryName = "New category";
// Create a new product
Product newProduct = new Product();
newProduct.ProductID = 2000;
newProduct.ProductName = "New product";
newProduct.Price = 20;
// Associate the new product with the new category
newProduct.ProductCategory = newCategory;
context.Products.InsertOnSubmit(newProduct);
// Send the changes to the database.
// Until you do it, the changes are cached on the client side.
context.SubmitChanges();
// Request the new product from the database
var query = from it in context.Products
            where it.ProductID == 2000
            select it;
// Since we query for a single object instead of a collection, we can use the method 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"

' Create a new product
Dim newProduct As product = New product()
newProduct.ProductID = 2000
newProduct.ProductName = "New product"
newProduct.Price = 20
' Associate the new product with the new category
newProduct.productcategory = newCategory
context.products.InsertOnSubmit(newProduct)

' Send the changes to the database.
' Until you do it, the changes are cached on the client side.
context.SubmitChanges()

' Request the new product from the database
Dim query = From it In context.products _
            Where it.ProductID = 2000 _
            Select it

' Since we query for a single object instead of a collection, we can use the method First()
Dim product As product = query.First()
Console.WriteLine("{0} | {1} | {2}", _
  product.productcategory.CategoryName, product.ProductName, product.Price)
Console.ReadLine()

该InsertOnSubmit ( )方法创建的每一个集合的范畴。这种方法储存在数据库中的信息都与物体。如范例中所示,它只是必要呼吁InsertOnSubmit ( )再次向这两个产品和品类的物体。
注意,在你添加新的产品和类别,提交变更,您就可以不执行这一解决方案是再次。为执行解决方案再次更改身份证的对象将增加。

更新数据
实体的情况下被修改如常。唯一要记住的是,你必须援引SubmitChanges( )方法来发送数据到数据库中。
附加以下块现有的代码和启动项目:

[C#]

product.ProductName = "Edited product";
product.Price = 15;
context.SubmitChanges();

[Visual Basic]

product.ProductName = "Edited product"
product.Price = 15
context.SubmitChanges()

删除数据
要提取的一个实例从上下文使用DeleteOnSubmit相应的方法收集。对象是从收集的类型,而不是摧毁。如果要删除对象的数据从数据库中调用SubmitChanges ( )方法。
为此,您可以用一段代码如下所示:

[C#]

context.products.DeleteOnSubmit(newProduct);
context.productcategories.DeleteOnSubmit(newCategory);
context.SubmitChanges();

[Visual Basic]

context.products.DeleteOnSubmit(newProduct)
context.productcategories.DeleteOnSubmit(newCategory)
context.SubmitChanges()

删除的对象是受属性模型。当DeleteRule参数级联,依赖对象的自动删除。当此参数SetNull ,依赖对象不会被删除,但关系是无效。当没有规则指定的顺序删除顺序是非常重要的。
其他信息
现在,您可以执行基本的数据处理与LINQ到的SQLite ,可以进入一些高级主题。 dotConnect的SQLite包括为帮助部分专门LINQ to SQL技术。您可以在网上http://www.devart.com/dotconnect/linq/docs/或当地在Visual Studio帮助集合。
LINQ to SQLite是发达国家密切合作,以微软的执行LINQ to SQL ,所以你可能会发现一些有用的信息MSDN中:
LINQ to SQL
LINQ to SQL : 。 NET语言集成查询关系数据库
为亲身体验使用样品运dotConnect为的SQLite 。您可以访问样品从开始菜单。
为了更深入地了解作品的LINQ to SQL引擎,您可以看到生成的SQL语句在DBMonitor或使用DataContext.Log财产。

转载于:https://www.cnblogs.com/bitstudio/archive/2009/03/29/1424483.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值