您的位置:知识库 » 数据库

走进Linq-Linq to SQL How do I(3)

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 19:25  阅读: 8015 次  推荐: 0   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进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-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


NHibernate是使用XML作为映射的配置文件,Caslte中的ActiveRecord(底层还是使用NHibernate)是使用Attribute的方式做映射配置。一个是非侵入的,一个是侵入的。有人喜欢用XML做配置,说这样灵活,修改配置无需重新编译,有人喜欢使用Attribute的配置方式,说这样可维护性好,可以得到编译期的检查。

不过在Linq里,这一切都不是问题。Linq to SQL这几种方式都支持,而且走的更远。

纯Attribute方式配置

XMl文件的配置方式

使用SqlMetal命令行工具生成配置代码

使用Visual Studio的设计器生成映射配置代码

纯Attribute方式配置

前面几篇我们都是使用这种Attribute的方式的,在Linq to SQL的第一篇我就介绍了,这些映射的Attribute都存在于System.Data.Linq.Mapping命名空间下。在前面我们已经出现了TableAttribute,ColumnAttribute, AssociationAttribute。实际上还有DataBaseAttribute,ProviderAttribute,FunctionAttribute。本篇后面的内容将在不同的地方对他们做全面的介绍。

Table

Table特性是加在类上面的,不能重复的加,也不能继承。Table,顾名思义,就是用来定义类和数据库表之间的映射的,Table是映射定义的关键点,如果没有给一个类加上Table特性,那么即使这个类里面的属性或字段加上了Column也是无效的,实际上,前面几篇中的例子,如果没有给映射类加Table特性在运行时会抛出一个异常:System.InvalidOperationException,说你的类没有映射为一个Table。Table特性只有一个属性Name,用于在你的类名和数据库表名不同的时候来定义。

Column

Column特性就复杂得多了。不过可喜的是,这些属性的命名都很好,只要见到名字了,基本上就能把意思给猜出来了。

AutoSync

AutoSync:自动同步。这个属性是一个枚举类型:

 

public enum AutoSync
{
Default,
Always,
Never,
OnInsert,
OnUpdate
}

 

这个属性的意思是,执行insert和update操作后,这个类的属性如何和数据库表的那个被修改列的字段进行同步。

AutoSync. Default,自动选择,默认就是这个,一般是如果该列在数据库里有默认值,Column的IsDbGenerated属性标记为true的时候则同步。

AutoSync. Always,总是进行同步

AutoSync.Never,从来不同步

AutoSync.OnInsert,在执行插入操作后同步,像我们博客园的那个例子,Blog的Id是主键,自增的,插入数据库的时候我们并不提供,而是数据库自动生成的,那这个时候我们的类插入以后这个Id如何同步呢?

AutoSync. OnUpdate,在更新的时候同步

0
0
标签:linq objects

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻