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

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

1、 [Association] attribute 是什么

   在LINQ to SQL中实体类之间的关联类似于在数据库中表之间的关联。
   [Association] attribute用于指定在数据库中的一个属性来表示关联。例如一个外键到主键的关系。你也可以表示一对一或多对多的关系。
  • 一对一:在关联的两端使用包含属性的EntitySet<TEntity>类型表示这种关系。
  • 多对多:在多对多关系中,链表(也叫联结表)的主键,通常形成其他两个表复合的一个外键。
参考:你可以查看这里:http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.associationattribute.aspx

2、怎么使用[Association] attribute

   关联指定使用 [Association] attribute,这允许你在数据库映射中两个类型间配置关系。
   [Association] attribute有下面几个重要属性:
  • OtherKey-属性的名称对应关联的另一端对象的id(获取或设置在关联的另一端上作为键值的、目标实体类的一个或多个成员)
  • ThisKey-对于这种类型,属性的名字与外键相对应(获取或设置表示关联的此端上的键值的此实体类成员)
  • Storage-这属性支持变量(获取或设置用来保存列中的值的私有存储字段。)
注释:括号内是MSDN上面的解释
一对多复合关联
示例1:
 1 [Table]
 2 public class Country  3 {  4  ...  5  6 private EntitySet<City> citiesRef;  7  8 [Association(Name = "FK_Country_Cities", Storage = "citiesRef", ThisKey = "ID", OtherKey = "CountryID")]  9 public EntitySet<City> Cities 10  { 11 get 12  { 13 return this.citiesRef; 14  } 15  } 16 ... 17 18 }

注释:在上面的代码片段中,citiesRef 支持EntitySet<City>类型的变量,因为citiesRef 是“一对多”关联的“多”这一边的。

示例2:

 1 [Table]
 2 public class City  3 {  4 //...  5  6 private EntityRef<Country> countryRef = new EntityRef<Country>();  7  8  9 [Association(Name = "FK_Country_Cities", Storage = "countryRef", ThisKey = "CountryID", OtherKey = "ID", IsForeignKey = true)] 10 public Country Country 11  { 12 get 13  { 14 return this.countryRef.Entity; 15  } 16 set 17  { 18 Country previousValue = this.countryRef.Entity; 19 if (((previousValue != value) || (this.countryRef.HasLoadedOrAssignedValue == false))) 20  { 21 if ((previousValue != null)) 22  { 23 this.countryRef.Entity = null; 24 previousValue.Cities.Remove(this); 25  } 26 this.countryRef.Entity = value; 27 if ((value != null)) 28  { 29 value.Cities.Add(this); 30 this.countryID = value.ID; 31  } 32 else 33  { 34 this.countryID = default(Nullable<int>); 35  } 36  } 37  } 38  } 39 //... 40 41 }

注释:在上面的代码片段中,countryRef 支持EntityRef<Country>类型的变量,因为citiesRef 是“一对多”关联的“一”这一边的。

你也可以参考这里http://www.windowsphonegeek.com/articles/Windows-Phone-Mango-Local-Database-mapping-and-database-operations

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

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

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

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

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

    这是"windows phone mango本地数据库(sqlce)"系列短片文章的第十一篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将 ...

  3. Windows Phone本地数据库(SQLCE):13、更新数据(翻译)

    这是"windows phone mango本地数据库(sqlce)"系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将 ...

  4. Windows Phone开发(48):不可或缺的本地数据库

    原文:Windows Phone开发(48):不可或缺的本地数据库 也许WP7的时候,是想着让云服务露两手,故似乎并不支持本地数据库,所有数据都上传上"云"数据库中.不过呢,在SD ...

  5. windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法

    windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 参考文章: (1)windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 (2)https://www. ...

  6. (九)HTML5本地存储——本地数据库SQLLite的使用

    在HTML5中,大大丰富了客户端本地可以存储的内容,添加了很多功能将原本必须要保存在服务器上的数据转为保存在客户端本地,从而大大提高了web应用程序额的性能,减轻了服务器端的负担,使web时代重新回到 ...

  7. docker 安装 nacos/nacos-server 镜像并配置本地数据库

    docker pull nacos/nacos-server 启动镜像 这里启动容器的时候参数配置我就不在详解了,不明白的话,评论区留言,有不会的问题一定要及时询问,期待你的评论呦! docker r ...

  8. azure云数据库_如何使用SQL Data Sync同步Azure SQL数据库和本地数据库

    azure云数据库 SQL Data Sync allows you to synchronize data across multiple Azure SQL databases and on-pr ...

  9. Oracle PLSQL工具登陆界面:连接库选项没有本地数据库名可选 解决方法

    通过参考了网上教程,创建好了数据库后,通过WINDOWS的命令窗口sqlplus工具对数据库进行了创建账号密码和配置权限. 但在使用PLSQL登陆时发现,在 数据库 选项中,没有创建的本地数据库 解决 ...

最新文章

  1. 要想成功 需要了解的东西
  2. 把项目从VS2005升级到VS2013
  3. redux模块化demo
  4. VS2010配置QT5.5.0开发环境
  5. Python socket的客户端
  6. http --- 路由器缓存与常见的状态码
  7. .NET架构小技巧(5)——反射,架构人员法宝III
  8. 【javascript高级教程】JavaScript 对象
  9. java 序列化实例_Java中的序列化与反序列化实例
  10. 华为大数据中心山西_任正非:华为愿与山西一道建立“煤矿人工智能创新实验室”...
  11. 小程序入门学习16--上传小程序至github
  12. [NOI2016]优秀的拆分
  13. 12.10上海交大PMP试题每日一题
  14. PHP后台数据处理及与web端进行数据交互
  15. iPad半年使用心得
  16. verilog的免费编译器
  17. C#毕业设计——基于C#+vc.net+Access的报名管理信息系统设计与实现(毕业论文+程序源码)——报名管理信息系统
  18. Win10 C盘爆红找出edb文件146G,删除后又出现如何解决
  19. rem等于多少px?
  20. 【EZSocket】卸载后未重启电脑,再安装后加密解密都不生效

热门文章

  1. Python读CSV数据
  2. linux下php连接mysql数据库_Linux下PHP连接Oracle数据库
  3. 回调函数自定义传参_koroFileHeader:一个用于生成文件头部注释和函数注释的插件...
  4. 简单html图片轮播_web前端入门到实战:简单的图片轮播
  5. php正则邮箱验证,php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)...
  6. python实现录音并去燥_Python实现电脑录音(含音频基础知识讲解)
  7. 南京廖华计算机二级考试答案,计算机二级习题答案
  8. Docker swarm集群详解(一)
  9. 0501 0503 模块区别_apollo介绍之planning模块(四)
  10. 域名怎么设置非80端口_深信服网关怎么设置端口映射