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

这是“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(翻译)(转)

时间: 2024-10-01 13:54:41

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

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

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第六篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点. 我将谈谈在windows phone mango本地数据库时使用[Index] attribute. 首先.要说到的是,windows phone 7.1上基本的数据库功能是SQL Compact关于Mango的一个实现.你将使用linq to sql访问存储在数据库上的数据. 注释:[In

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

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.这个时候我将谈谈有关你使用windows phone mango本地数据库时使用[table]attribute. 1.[Table]attribute是什么? 你可以使用这个属性来指定一个类作为与数据库表或视图有关的实体类.LINQ to SQL将有这个属性的类作为持久化类. 你可以使用Ta

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

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第四篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.我将谈谈在windows phone mango本地数据库时使用[Column] attribute. 首先,要说到的是,windows phone 7.1上的数据库功能是SQL Compact关于Mango的一个实现.你将使用linq to sql访问存储在数据库上的数据. 1.[Colum

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

一只大菜鸟,最近要学习windows phone数据库相关的知识,找到了一些比较简短的教程进行学习,由于是英文的,顺便给翻译了.本身英语水平就不好,估计文中有不少错误,如果有不幸读到的童鞋请保持对翻译质量的质疑,多多指教. 这是原文地址:http://windowsphonegeek.com/tips/Windows-Phone-Mango-Local-Database%28SQL-CE%29-Introduction 正文如下: 我开始了一个新的系列——Windows Phone Mango本

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

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第七篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点. 我将谈谈在数据库中映射类到表中,也就是说,在你的对象模型和数据库模式之间映射. 1.Database mapping是什么 为了创建一个本地数据库,第一,你必须定义实体类.这些类定义了你的对象模型和它到数据库模式上的映射.LINQ to SQL的对象关系能力取决于映射的详细信息,以此来创建一

Windows Phone本地数据库(SQLCE):2、LINQ to SQL(翻译)(转)

首先.要说到的是,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本地数据库(SQLCE):8、DataContext(翻译)

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第八篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.我将谈谈在windows phone mango本地数据库中使用DataContext的问题. 1.DataContext是什么 DataContext的用途是以面向对象的方式来显示数据库到其余的代码上.DataContext有三个重要的特点: (1)它从System.Data.Linq.Da

Windows Phone本地数据库(SQLCE):12、插入数据(翻译)

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十二篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.我将谈谈在windows phone mango本地数据库里怎么插入数据. 插入数据到数据库是一个两个步骤的过程.首先使用InsertOnSubmit 方法添加一个对象到DataContext,然后调用DataContext的SubmitChanges 方法来将保存数据作为数据库中的行. 注

Windows Phone本地数据库(SQLCE):9、Connection Strings(翻译) (转)

这是“windows phone mango本地数据库(sqlce)”系列短片文章的第八篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的知识点.我将谈谈在windows phone mango本地数据库中使用Connection Strings的问题. 1.ConnectionStrings是什么 在我们实际开始使用一个数据库之前,我们需要制定一个连接字符串,它告诉应用程序怎么连接数据库.一个连接字符串可以被用来做数据库的配置值.在连