数据库分表时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;
                …

}

}

posted @   2012  阅读(3791)  评论(3编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示