Linq To SQL--用xml文件配置实体类

转自:http://blog.sina.com.cn/s/blog_7b60d05f0101tjgo.html

Linq To SQL--用xml文件配置实体类

 
上一篇说过利用自定义实体类来接受数据库的映射,但是看到类中各种的标志十分的不美观,我们要把一些配置的东西放到特定的文件然后将业务逻辑的东西放到另外一个东西,这样才符合适合的设计结构,那么我们看一下竟然DataContext起到桥梁的作用,那么我们看一下DataContext的构造函数到底还有些什么:
一:DataContext(string fileOrServerOrConnection);
接受的参数可以有数据库连接字符串或者一个数据源文件路径来构造一个DataContext对象。
二:DataContext(System.Data.IDbConnection connection);这个可以结合ADO.NET来构造DataContext对象。
三:DataContext(string fileOrServerOrConnection,System.Data.Linq.MappingSource mapping)
这个构造方法第一个参数使用数据源文件路径或者连接字符串,第二个参数注意了,是一个MappingSource类型的参数。这个MappingSource有一个子类是XmlMappingSource,所以,这个重载方法能使用Xml文件来定义各种映射关系而不用放在类定义的地方。
四:DataContext(System.Data.IDbConnection connection,System.Data.Linq.MappingSource mapping)
第一个参数变了,变成ADO.NET中的IDbConnection类型参数。
 
好了,这篇主要讲的是Xml文件配置映射关系,所以第三个重载方法是重点,下面看xml文件内容:
******************************************************************************
<?xml version="1.0" encoding="utf-8" ?>
<Database Name="LinqTestDatabase"
          xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"
          >
  <Table Name="Author">
    <!--Type代表实体类型-->
    <Type Name="使用XML文件配置实体类.AuthorEntity">
      <!--Name代表列名称,Menber代表实体类属性名称-->
      <Column Name="ID" Member="Id" 
              DbType="Int NOT NULL" IsPrimaryKey="True"/>
      <Column Name="Name" Member="Name"
              DbType="nvarchar(50) NOT NULL" CanBeNull="False"/>
      <Column Name="Age" Member="Age"
              DbType="Int NOT NULL" />
      <Column Name="Address" Member="Address"
              DbType="nvarchar(50) NOT NULL" />
      <Association Name="FK_Book_Author"
                   Member="Books" Storage="_Books" OtherKey="AuthorId" ThisKey="Id"/>
    </Type>
  </Table>
 
  <Table Name="Book">
    <!--Type代表实体类型-->
    <Type Name="使用XML文件配置实体类.BookEntity">
      <!--Name代表列名称,Menber代表实体类属性名称-->
      <Column Name="Id" Member="Id"
              DbType="Int NOT NULL" IsPrimaryKey="True"/>
      <Column Name="Title" Member="Title"
              DbType="nvarchar(50) NOT NULL" CanBeNull="False"/>
      <Column Name="AuthorId" Member="AuthorId"
              DbType="Int NOT NULL" />
      <Column Name="Press" Member="Press"
              DbType="nvarchar(50) NOT NULL" />
      <Column Name="Price" Member="Price"
              DbType="float" />
      <Column Name="Date" Member="Date"
              DbType="Datetime" />
    </Type>
  </Table>
</Database>
*********************************************************************************8
有几点需要注意的是:
1.<DataBase>标签中的Name属性是数据库名称
2.xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"必须添加
3.<Type>标签代表的是要映射到的实体类型。<Column >中Name属性是数据库中列的名称,而Member属性是实体类型的属性名称。
4.<Association >是表间关系。
 
XML文件有了,下面看一下两个实体类,我们在xml文件也看到了,这两个实体类的名称分别是:AuthorEntity和BookEntity
Linq <wbr>To <wbr>SQL--用xml文件配置实体类

Linq <wbr>To <wbr>SQL--用xml文件配置实体类

这样一来,两个实体类就简单多了,没有那么多繁琐的东西。
下面看具体的使用:
Linq <wbr>To <wbr>SQL--用xml文件配置实体类
这里新建的一个DataContext对象时使用了连接字符串和XmlMappingSource类型的对象来创建的,其他的都差不多一样了。看一下结果:
Linq <wbr>To <wbr>SQL--用xml文件配置实体类

好了,就记录这里
原文地址:https://www.cnblogs.com/nearpengju123/p/4341132.html