2.1 如何建立LINQ项目 下

  • 评论:0
  • 浏览:564
  • RSS:0
文章类型:原创

数据库对象模型

那么,我们该怎么生成数据库对象模型呢?

a)  通过O/R(Object Relational Designer设计器生成:

O/R设计器是一个可视的、所见即所得的图形化设计LINQ toSQL实体类的工具,并且完整的包括了数据库之间的关系,也就是说它映射了数据库之间的对象、存储过程、视图等等。在O/R设计器中,他提供了两个不同的设计窗口,左边是实体类的设计窗口,右边是方法的设计窗口,实体类设计窗口主要设计实体类,实体类之间的关系,方法设计窗口主要是映射存储过程和函数。现在O/R设计器仅支持SQL Server 2000,SQL Server 2005SQL Server Express。我们现在通过一个例子来介绍如何使用O/R设计器:

依次选择 File->New File ->LINQ to SQL Class 并把文件命名为User.DBML

未命名.jpg

此时编译器就给我们建立好了一个空的LINQ to SQL Class。我们在依次选择数据库浏览器->选择我们的数据库->选择User表和getAllUser的存储过程拖入到 O/R设计器中。最后结果如图X-X所示。

未命名.jpg

现在我们保存文件,一个包含了User表和getAllUser的存储过程的数据库对象模型就声称了。

b)  使用SqlMeta.exe命令行工具生成:

SqlMeta.exe命令行工具(需要在Visual Studio 2008的命令行工具中执行)也是能连接到数据库并直接产生根数据库对应得对象模型。与O/R设计器所不同的除了不是命令行工具以外,他是把数据库中所有的表生成一个数据库对象模型,而O/R设计器可以根据需要来生成不同的数据库模型。

下面介绍一下SqlMeta.exe一些主要参数,如表X-X所示。

X-X SqlMeta.exe主要参数

参数名称

参数说明

/server:<name>

指定数据库地址

/database:<name>

指定数据表名称

/user:<name>

指定数据库的用户名

/password:<name>

指定数据库的用户密码

/views

生成的数据库对象模型中包含视图

/sprocs

生成的数据库对象模型中包含存储过程

/functions

生成的数据库对象模型中包含自定义函数

/dbml[:file]

生成的数据库对象模型以dbml文件形式存在,如果使用了此参数的话,则不能使用 /map参数

/code[:file]

生成的数据库对象模型以cs/vb文件形式存在,如果使用了此参数的话,则不能使用 /dbml参数

/map[:file]

生成的数据库对象模型以XML文件形式存在,如果使用了此参数的话,则不能使用 /dbml参数

/language:<language>

指定生成数据库对象模型的语言,参数为:vb, csharp.

/namespace:<name>

指定生成数据库对象模型的命名空间。默认为无命名空间

/pluralize

 

使用一些默认的命名逻辑习惯(单数化或者复数化)来创建属性和表的名字-比如创建一个“User“类来映射到“Users”表或者创建一个“Users”类来映射到“User”

/serialization:<option>

 

序列化数据库对象模型,参数为:None, Unidirectional.默认值为:None,即不序列化

<input file>

 

针对SQL Server Express .mdf文件、SQL Server Compact 3.5 .sdf文件、或者.dbml文件的具体路径,并生成数据库对象模型。

例如:

从数据库northwind中生成mymeta.dbml文件

sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml

 

SQL Server Express数据库生成dbml文件

sqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwind

 

指定生成的dbml文件的语言为c#

 

sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml

 

制定生成的dbml文件的命名空间为nwind

 

sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp