数据库分表时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;
…
}
}
数据库分表时OR Mapping方法相关推荐
- Laravel框架中数据库分表时Model使用方法
前言: 0.最近在使用laravel框架做MySQL分表的时候经过实践和踩坑,总结了以下3种可行的分表方法,亲测可用. 1.本人公司做的是SaaS系统,以店铺为维度.店铺id(shop_id) 命名规 ...
- mysql 数据库分表三种方法
当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. 根据个人经验,mysql执行一个sql的过程如下 ...
- DM达梦数据库删除表时提示锁超时的解决方法
DM 达梦数据库删除表时提示锁超时的问题 1. 问题描述 达梦数据库删除表时,删除失败,提示的报错信息是 锁超时 2. 解决方法 查询所删除表对应的SESS_ID,sql语句如下: select a. ...
- 【学习】MybatisPlus + ShardingSphere 分表对象使用updateById方法自动补齐分表属性
问题: 当使用ShardingSphere进行分表时,在使用MybatisPlus的iService扩展的updateById方法会导致报错 异常信息: Can not update sharding ...
- postgresql分妺_PostgreSql数据库分表
1.背景 在项目组件的开发中,统计模块使用的表数据量较大,影响查询性能,需要进行分表处理.本文将介绍PostgreSql数据库表分区的策略以及其在巡查考评组件开发中的应用. 2.术语解释主表:该表是创 ...
- php mysql新闻表模板_新闻数据库分表案例
新闻数据库分表案例目录:[-]NetkillerMySQL手札MySQLMariaDB...Mr.NeoChan,陈景峰(BG7NYT)4.16.3.新闻数据库分表案例NetkillerMySQL手札 ...
- mysql分表的3种方法
参考:https://blog.csdn.net/czh500/article/details/89735492 一,先说一下为什么要分表 一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联 ...
- mysql字段掩码_在必须输入字母A~Z或数字0~9数据库中设计表时,如果将字段的输入掩码设置为“LLLL”,则该字段能够接受的输入是()_学小易找答案...
[单选题]关于Access2010的索引,下列叙述中错误的是() [单选题]痰饮淤血() [单选题]关于Access查询中的数据源,下列说法中正确的是 [单选题]对Access2010表中某一个字段建 ...
- 超大数据量存储常用数据库分表分库算法总结
这篇文章主要介绍了超大数据量存储常用数据库分表分库算法总结,本文讲解了按自然时间来分表/分库.按数字类型hash分表/分库.按md5值来分表/分库三种方法,以及分表所带来的问题探讨,需要的朋友可以参考 ...
最新文章
- center6linux ip设置,centos6固定ip地址
- PAT (Basic Level) 1080 MOOC期终成绩(模拟+stl)
- 用PHP打印出前一天的时间
- 我们究竟还要学习哪些Android知识?附赠课程+题库
- 软件测试项目计划书总结,软件测试项目计划书.doc
- ASP.NET MVC中如何在客户端进行必要的判断
- 记录是一段旅程:记录Scribus可获得3课
- ztree 后台异步加载_zTree树形插件异步加载方法详解
- android中修饰void的类型,方法添加Android中
- MOODLE的安装与基本配置
- 《大连金州没有眼泪》
- 如何使用 React Native 构建信用卡扫描仪
- 雅虎微软交易局中局:巴茨开始绝望主妇式攻击
- shader篇-纹理-渐变纹理
- 重新振作起来,继续战斗
- webpack-dev-server代理请求配置
- 关联分析(Apriori,FP-growth)
- SQLServer Job 邮件发送
- ClickableSpan 去除下划线
- c mysql 报表_c 数据库报表打印