zoukankan      html  css  js  c++  java
  • 数据库分表时OR Mapping方法


    最近使用ADO.net Entity应用中遇到一个分表的应用,IDE中是不可视化支持这个的,为此使用了基于LINQ的方法解决了该问题。

    数据库分表的意义和目的

    分表技术顾名思义,就是把若干个存储相同类型数据的表分成几个表分表存储,在提取数据的时候,不同的用户访问不同的表,互不冲突,减少锁表的几率。

    详细参考:

    http://club.topsage.com/thread-1842602-1-1.html

    基于LINQ的实现

    具体的步骤

    Ø 使用sqlmetal.exe(VS开发工具带) 生成实体类和架构文件

    Ø 选择需要使用的实体类和配置文件,形成使用的模板

    Ø 基于这些模板,使用XmlMappingSource 类和LINQ访问数据库

     

    例子

    命令行执行

    sqlmetal /server:localhost /database:northwind /code:ns.cs /map:ns.xml /namespace:DAL

    架构文件例子

    <?xml version="1.0" encoding="utf-8"?>
    <Database Name="{0}" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007">
      <Table Name="{1}">
        <Type Name="Customer">
          <Column Name="CustomerID" Member="CustomerID" Storage="_CustomerID" DbType="NChar(5) NOT NULL" CanBeNull="false" IsPrimaryKey="true" />
          <Column Name="CompanyName" Member="CompanyName" Storage="_CompanyName" DbType="NVarChar(40) NOT NULL" CanBeNull="false" />
          <Column Name="ContactName" Member="ContactName" Storage="_ContactName" DbType="NVarChar(30)" />
        </Type>
      </Table>
    </Database>

    {0} {1}表示可变的数据库和表名称

    实体例子

        public partial class Customer: INotifyPropertyChanging, INotifyPropertyChanged
        {
            private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
            private string _CustomerID;
            private string _CompanyName;
            private string _ContactName;

    代码访问

    XmlMappingSource xml = XmlMappingSource.FromXml(string.Format(AppResource.SentenceTemplate, "IAT2011", sentenceName));
    using (DataContext ctx = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings["IATDB"].ConnectionString, xml))
               { 
                  ctx.DeferredLoadingEnabled = true;
                    …

    }

    }

  • 相关阅读:
    不会全排列算法(Javascript实现),我教你呀!
    驰骋页面,谁主沉浮-也谈清除浮动
    你不知道的parseInt
    Javascript函数重载,存在呢—还是存在呢?
    在这个看脸的世界,该如何优雅的创建JS对象
    Python 函数的使用小结
    Python 集合(set)的使用总结
    Python 文件操作
    python 中字典的操作(增、删、改、查)
    python 中list的操作(循环、切片、增、删、改、查、反转、排序)
  • 原文地址:https://www.cnblogs.com/amityat/p/2159344.html
Copyright © 2011-2022 走看看