走进Linq-Linq to SQL How do I(3)
[2] 走进Linq-Linq to SQL How do I(3)
[3] 走进Linq-Linq to SQL How do I(3)
[4] 走进Linq-Linq to SQL How do I(3)
[5] 走进Linq-Linq to SQL How do I(3)
系列文章导航:
不能不说的C#特性-迭代器(下),yield以及流的延迟计算
走进Linq-Linq to SQL How do I(1)
走进Linq-Linq to SQL How do I(2)
走进Linq-Linq to SQL How do I(3)
走进Linq-Linq to SQL源代码赏析 Table
走进Linq-Linq to SQL源代码赏析之Provider的初始化
走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq
Association
这个特性是用来建立实体之间关系的。在前面的例子里我们看到了:
/// <summary>
/// 一个博客有零篇或多篇文章,
/// </summary>
[Association(ThisKey="Id",OtherKey = "BlogId")]
public EntitySet<Post> Posts { get; set; }
Association有两个最重要的属性就是ThisKey和OtherKey
ThisKey用来标识和别的对象关联的键,如果没有指明就用本类属性上标识有IsPrimaryKey的了。OtherKey用来定义关联的类的键,如果没有指定就用关联的那个类的标识列了。
Association特性也是从Data特性继承来的,也有Name和Storage属性。Storage属性和Column是一样的,这里的Name属性是CreateDataBase利用映射类动态创建数据库的时候建立关系用的,这个Name就是关系名。关于Association的更多信息你还是参看上一篇文章。
我们用的最多的就是上面三个Attribute了,不过Linq to SQL还提供好几个Attribute,我想这个放在后面相应的地方再做介绍。
XML文件的配置方式
有心的你也许发现了,DataContext类有好几个重载的构造函数,我们常用的是:
DataContext(string fileOrConnectionString)
还有一个:
DataContext(string fileOrConnectionString,MappingSource mapping)
这个MappingSource是干吗的呢?
在System.Data.Linq.Mapping命名空间下,你会发现这样的个关系:
看到它的两个子类的名称你也许就会猜出十之八九了吧,我们前面所使用的就是AttributeMappingSouce映射,除此之外还可以使用XML作为映射的配置文件哦,从上面的图看,XmlMappingSource还有几个静态的方法,他们可以以各种形式的Xml数据源来构建XmlMappingSource实例:
XmlMappingSource mapping = XmlMappingSource.FromXml(File.ReadAllText(@“e:"cnblogs"map.xml”)); DataContext dbContext = new DataContext(connectionString,mapping);
用这种方式构建DataContext对象我们就可以使用Xml作映射了。