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;
                    …

    }

    }

  • 相关阅读:
    [NOIP2006] 提高组 洛谷P1064 金明的预算方案
    [NOIP2006] 提高组 洛谷P1063 能量项链
    [NOIP2006] 提高组 洛谷P1065 作业调度方案
    [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金
    [NOIP2005] 提高组 洛谷P1054 等价表达式
    [NOIP2005] 提高组 洛谷P1053 篝火晚会
    [NOIP2005] 普及组 循环
    Bzoj3622 已经没有什么好害怕的了
    [NOIP2006] 普及组
    Bzoj1008 [HNOI2008]越狱
  • 原文地址:https://www.cnblogs.com/amityat/p/2159344.html
Copyright © 2011-2022 走看看