首先、要说到的是,windows phone 7.1上基本的数据库功能是SQL Compact关于Mango的一个实现,使用linq to sql访问存储在数据库上的数据。

 

1、LINQ to SQL是什么

LINQ to SQL 是一个作为.NET Framework上的一部分的ORM(对象关系映射)框架。它允许你映射你的业务对象(business object)(模型类)到数据库中的表,然后可以不用写单一的SQL语句来访问或查询数据库中的数据。随着Mango的更新,LINQ to SQL现在可以用于Windows Phone。

     你可以使用LINQ to SQL:
     1、映射你的业务对象(business object)到数据库中的表
     2、使用LINQ查询数据库
     3、使用LINQ to SQL的API插入数据到数据库中
     4、使用LINQ to SQL的API更新数据
     5、使用LINQ to SQL的API删除数据
 
     虽然windows phone 支持LINQ to SQL的大部分特性,但是它也有一些局限性。你可以看一下完整的MSDN文档http://msdn.microsoft.com/zh-cn/library/hh202872(v=vs.92).aspx。下面给出其中的一些:
    1、不支持ExecuteCommand :Windows Phone 不支持执行原始 Transact-SQL、数据定义语言 (DDL) 或数据建模语言 (DML) 语句。    
     2、不支持ADO.NET(例如DataReader):LINQ to SQL查询的所有数据都将在DataContext指定的类型集合中返回    
     3、仅支持Microsoft SQL Server Compact Edition (SQL CE)数据类型:SQLCE是本地数据库的基础数据库技术。有关SQLCE数据类型的完整列表请看:http://msdn.microsoft.com/zh-cn/library/ms172424(v=sql.110).aspx

      4、不支持Table.IListSource.GetList :若要绑定到表中的所有内容,请查询整个表并绑定到查询。使用业务逻辑处理插入和删除。
      5、不支持BinaryFormatter(二进制类型):若要将自定义类型转换为SQL Server Binary或VarBinary数据类型,您的数据上下文属性可以实现LINQ to SQL CustomType,或者可以为byte[]或System.Data.Linq.Binary 类型。若要实现 LINQ to SQL CustomType,请首先创建实现 ToString() 和 Parse() 的自定义类,然后将该类用作您数据上下文中的属性。LINQ to SQL 可从 CustomType 映射到任何 SQL Server 字符串类型,例如,Char、NChar、NVarChar、Text 和 XML。
      6、Take() 在LINQ查询中需要使用常数值:SQL CE 不支持在 Transact-SQL TOP 会话中使用查询值。如果您要在 Take 方法中使用变量值,请在未使用 Take 方法的其他查询中计算该值。
      7、Skip()和Take()需要使用排序列表:这些方法依赖于排序返回一致的结果。

2、它是怎么工作的

简单地说,LINQ是一组扩展方法,让你可以在C#或VB中使用特殊的查询语法来查询数据库中的数据。为了表示查询而使用标准的LINQ查询运算符,基本的查询语法是一个方便的陈述性的简写。在你开始之前,你需要了解一些基本的东西:

       1、LINQ to SQL 查询表达式通常以“from”子句开始,以“select”子句结束
    2、“from”子句表示你想要查询的数据(通常你从collection/datacontext中查询数据)
    3、“select”子句表示你想要返回的数据,并且它应该是什么样的格式
    4、每当你想要过滤数据时你可以使用“where”子句
    5、通过“orderby”子句对数据进行排列
注释:LINQ to SQL在数据库层完成所有的过滤和排序,这让它变得非常高效。为此,你可以在C#代码中编写LINQ查询,它会自动翻译成SQL,然后SQL runtime会执行语句,所以当你执行下面的LINQ 查询
1 var query = from p in context.Persons where p.Age > 18 select p;

在实际执行之前,LINQ to SQL runtime会自动将它翻译成下面的SQL查询

1 SELECT [t0].[ID], [t0].[FirstName], [t0].[LastName], [t0].[Age]
2 FROM [dbo].[People] AS [t0]
3 WHERE [t0].[Age] > @p0

注释:关于更多的关于完整的LINQ语法你可以看一下官方文档:http://msdn.microsoft.com/zh-cn/library/bb308959.aspx

这篇文章我谈了有关在windows phone mango本地数据库中使用LINQ to SQL。请继续关注接下来的文章。

Windows Phone本地数据库(SQLCE):2、LINQ to SQL(翻译)(转)的更多相关文章

  1. Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十一篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...

  2. Windows Phone本地数据库(SQLCE):8、DataContext(翻译)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第八篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知 ...

  3. Windows Phone本地数据库(SQLCE):7、Database mapping(翻译)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第七篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知 ...

  4. Windows Phone本地数据库(SQLCE):6、[Index] attribute(翻译)(转)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第六篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知 ...

  5. Windows Phone本地数据库(SQLCE):5、[Association]attribute(翻译)(转)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第五篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知 ...

  6. Windows Phone本地数据库(SQLCE):4、[Column]attribute(翻译) (转)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第四篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知 ...

  7. Windows Phone本地数据库(SQLCE):3、[table]attribute(翻译) (转)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知 ...

  8. Windows Phone本地数据库(SQLCE):1、介绍(翻译)(转)

    一只大菜鸟,最近要学习windows phone数据库相关的知识,找到了一些比较简短的教程进行学习,由于是英文的,顺便给翻译了.本身英语水平就不好,估计文中有不少错误,如果有不幸读到的童鞋请保持对翻译 ...

  9. Windows Phone本地数据库(SQLCE):14、删除数据(翻译)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的最后一篇第十四篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需 ...

随机推荐

  1. 常用SQL函数(字符串分隔转表、自增长转编号)

    字符串分隔转表 -- ============================================= -- Author: -- Create date: -- Description: ...

  2. jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令

    昨晚测试成功了. 现在ssh agent的认证,已不支持明文用户密码,而只能用加密方式实现. 所以我先在jenknis和nginx服务器之后,实现ssh免密码rsa证书登陆. 私钥放jenkins,公 ...

  3. maven 配置阿里云仓库

    <mirror>     <id>nexus-aliyun</id>     <mirrorOf>*</mirrorOf>     < ...

  4. 【LOJ】#2585. 「APIO2018」新家

    题解 成功把自己写自闭了 离散化之后再二分我是真不会算坐标啊我这个zz 先离散化所有坐标,然后对于每个位置维护一个最小前驱,然后线段树区间维护最小前驱 什么?位置一样?那就给每个大小为1的位置开个mu ...

  5. linux 检测远程端口是否打开

    linux 检测远程端口是否打开   检测远程端口是否打开   常用telnet 110.101.101.101 80方式测试远程主机端口是否打开.   除此之外还可以使用:   方法1.nmap i ...

  6. 1044-Access denied for user 'root'@'%' to database 'lc_db'

    远程登录Linux中的MySQL时,如果直接在工具中创建数据库时,有可能出现下面图中这样的错误: 这种错误是在远程登录时造成的,如果直接在Linux中本地操作没有问题(在Linux中的MySQL下,通 ...

  7. Java 分布式系统 实现session共享

    当然业界已经有很多成熟的解决方案,我罗列如下: 1.服务器实现的session复制或session共享,这类型的共享session是和服务器紧密相关的,比如webSphere或JBOSS在搭建集群时候 ...

  8. Lighthouse前端性能优化测试工具

    在前端开发中,对于自己开发的app或者web page性能的好坏,一直是让前端开发很在意的话题.我们需要专业的网站测试工具,让我们知道自己的网页还有哪些需要更为优化的方面,我自己尝试了一款工具:Lig ...

  9. 【Vue实战之路】一、Vue-cli入门及Vue工程目录全解。

    全面的Vue-cli学习,这一篇就够了! 一.下载 使用vue-cli前,需先安装node.js,node的安装就不赘述,不过在此需要注意: 1. node版本需在4.x以上,首推6.x以上版本(no ...

  10. 循序渐进学.Net Core Web Api开发系列【13】:中间件(Middleware)

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...