數(shù)據(jù)庫分表的意義和目的
分表技術(shù)顧名思義,就是把若干個(gè)存儲(chǔ)相同類型數(shù)據(jù)的表分成幾個(gè)表分表存儲(chǔ),在提取數(shù)據(jù)的時(shí)候,不同的用戶訪問不同的表,互不沖突,減少鎖表的幾率。
詳細(xì)參考:
http://club.topsage.com/thread-1842602-1-1.html
基于LINQ的實(shí)現(xiàn)
具體的步驟
Ø 使用sqlmetal.exe(VS開發(fā)工具帶) 生成實(shí)體類和架構(gòu)文件
Ø 選擇需要使用的實(shí)體類和配置文件,形成使用的模板
Ø 基于這些模板,使用XmlMappingSource 類和LINQ訪問數(shù)據(jù)庫
例子
命令行執(zhí)行
sqlmetal /server:localhost /database:northwind /code:ns.cs /map:ns.xml /namespace:DAL
架構(gòu)文件例子
<?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}表示可變的數(shù)據(jù)庫和表名稱
實(shí)體例子
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;
…
}
}