最近使用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;
                …

}

}

数据库分表时OR Mapping方法相关推荐

  1. Laravel框架中数据库分表时Model使用方法

    前言: 0.最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3种可行的分表方法,亲测可用. 1.本人公司做的是SaaS系统,以店铺为维度.店铺id(shop_id) 命名规 ...

  2. mysql 数据库分表三种方法

    当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. 根据个人经验,mysql执行一个sql的过程如下 ...

  3. DM达梦数据库删除表时提示锁超时的解决方法

    DM 达梦数据库删除表时提示锁超时的问题 1. 问题描述 达梦数据库删除表时,删除失败,提示的报错信息是 锁超时 2. 解决方法 查询所删除表对应的SESS_ID,sql语句如下: select a. ...

  4. 【学习】MybatisPlus + ShardingSphere 分表对象使用updateById方法自动补齐分表属性

    问题: 当使用ShardingSphere进行分表时,在使用MybatisPlus的iService扩展的updateById方法会导致报错 异常信息: Can not update sharding ...

  5. postgresql分妺_PostgreSql数据库分表

    1.背景 在项目组件的开发中,统计模块使用的表数据量较大,影响查询性能,需要进行分表处理.本文将介绍PostgreSql数据库表分区的策略以及其在巡查考评组件开发中的应用. 2.术语解释主表:该表是创 ...

  6. php mysql新闻表模板_新闻数据库分表案例

    新闻数据库分表案例目录:[-]NetkillerMySQL手札MySQLMariaDB...Mr.NeoChan,陈景峰(BG7NYT)4.16.3.新闻数据库分表案例NetkillerMySQL手札 ...

  7. mysql分表的3种方法

    参考:https://blog.csdn.net/czh500/article/details/89735492 一,先说一下为什么要分表 一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联 ...

  8. mysql字段掩码_在必须输入字母A~Z或数字0~9数据库中设计表时,如果将字段的输入掩码设置为“LLLL”,则该字段能够接受的输入是()_学小易找答案...

    [单选题]关于Access2010的索引,下列叙述中错误的是() [单选题]痰饮淤血() [单选题]关于Access查询中的数据源,下列说法中正确的是 [单选题]对Access2010表中某一个字段建 ...

  9. 超大数据量存储常用数据库分表分库算法总结

    这篇文章主要介绍了超大数据量存储常用数据库分表分库算法总结,本文讲解了按自然时间来分表/分库.按数字类型hash分表/分库.按md5值来分表/分库三种方法,以及分表所带来的问题探讨,需要的朋友可以参考 ...

最新文章

  1. center6linux ip设置,centos6固定ip地址
  2. PAT (Basic Level) 1080 MOOC期终成绩(模拟+stl)
  3. 用PHP打印出前一天的时间
  4. 我们究竟还要学习哪些Android知识?附赠课程+题库
  5. 软件测试项目计划书总结,软件测试项目计划书.doc
  6. ASP.NET MVC中如何在客户端进行必要的判断
  7. 记录是一段旅程:记录Scribus可获得3课
  8. ztree 后台异步加载_zTree树形插件异步加载方法详解
  9. android中修饰void的类型,方法添加Android中
  10. MOODLE的安装与基本配置
  11. 《大连金州没有眼泪》
  12. 如何使用 React Native 构建信用卡扫描仪
  13. 雅虎微软交易局中局:巴茨开始绝望主妇式攻击
  14. shader篇-纹理-渐变纹理
  15. 重新振作起来,继续战斗
  16. webpack-dev-server代理请求配置
  17. 关联分析(Apriori,FP-growth)
  18. SQLServer Job 邮件发送
  19. ClickableSpan 去除下划线
  20. c mysql 报表_c 数据库报表打印

热门文章

  1. linux基础文件管理基础命令
  2. 【思维导图】redis
  3. js 判断数据类型的几种方法
  4. Spring MVC + Hibernate JPA + Bootstrap 搭建的博客系统
  5. 采用fdisk在linux进行分区操作
  6. 在Linux系统下配置Java开发环境
  7. Fedora15上实现桌面背景图片渐变
  8. Alpha 测试和Beta的区别
  9. 共享单车取消月卡优惠 烧钱时代正式结束
  10. Zookeeper单机伪集群