<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      XCode v8.11 重量級分表分庫(無視海量數據)

      XCode天生就有分表分庫功能,設計于2005年!
      歷時9年,這是分表分庫功能第一次針對性正式更新。

      在XCode里面,分表分庫非常簡單,在操作數據(查詢/更新)前修改Meta.ConnName/Meta.TableName,指向別的連接字符串和表名,就實現了分表分庫功能!
      實際上,XCode實體層構建數據操作SQL(Select/Insert/Update/Delete)時,依賴于Meta.TableName,執行SQL時,依賴于Meta.ConnName。所以,修改這兩個即可實現數據操作的重定向!
      為了避免多線程誤傷以及混亂,這兩個屬性的修改,都是僅對本線程有效!

      實例代碼如下:

      var entity = User.FindByID(1);
      entity.Account = "大石頭" + DateTime.Now;
      User.Meta.ProcessWithSplit(null, "User2", () => entity.Insert());
      using (var sp = User.Meta.CreateSplit(null, "User3"))
      {
          entity.Insert();
      }

      這里展示了兩種分表分庫的用法!
      新增加的兩個API是
      ProcessWithSplit和CreateSplit,前兩個參數就是ConnName和TableName,意思是在目標連接/表名上進行數據庫操作。
      這兩個API都具有連接名表名還原功能,也就是說,執行完目標數據操作代碼以后,連接名和表名要還原回來當前狀態。

      執行日志如下:

      03:38:28.996 9 N - Select * From [User] Order By ID Desc
      03:38:29.038 9 N - 完成更新緩存(第1次):NewLife.CommonEntity.User
      03:38:29.118 9 N - 檢查實體NewLife.CommonEntity.User的數據表架構,模式:CheckTableWhenFirstUse
      03:38:29.208 9 N - 創建表:User2(用戶)
      03:38:29.225 9 N - Create Table User2(
          ID int IDENTITY(1,1) Primary Key,
          Account nvarchar(50) NULL,
          Password nvarchar(50) NULL,
          IsAdmin bit NULL,
          IsEnable bit NULL
      )
      03:38:29.234 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'用戶' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User2'
      03:38:29.241 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'編號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User2', @level2type=N'COLUMN',@level2name=N'ID'
      03:38:29.250 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'賬號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User2', @level2type=N'COLUMN',@level2name=N'Account'
      03:38:29.256 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'密碼' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User2', @level2type=N'COLUMN',@level2name=N'Password'
      03:38:29.262 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'是否管理員' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User2', @level2type=N'COLUMN',@level2name=N'IsAdmin'
      03:38:29.267 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'是否啟用' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User2', @level2type=N'COLUMN',@level2name=N'IsEnable'
      03:38:29.273 9 N - Create Unique Index IX_User2_Account On User2 (Account)
      03:38:29.280 9 N - select rows from sysindexes where id = object_id('User2') and indid in (0,1)
      03:38:29.290 9 N - 開始初始化User用戶數據……
      03:38:29.299 9 N - Select Count(*) From User2 Where Account=N'admin'
      03:38:29.319 9 N - SET NOCOUNT ON;Insert Into User2(Account, Password, IsAdmin, IsEnable) Values(N'admin', N'21232F297A57A5A743894A0E4A801FC3', 1, 1);Select SCOPE_IDENTITY()
      03:38:29.330 9 N - 完成初始化User用戶數據!
      03:38:29.333 9 N - Select * From User2 Where Account=N'大石頭2014/6/16 3:38:29' Order By ID Desc
      03:38:29.342 9 N - SET NOCOUNT ON;Insert Into User2(Account, Password, IsAdmin, IsEnable) Values(N'大石頭2014/6/16 3:38:29', N'21232F297A57A5A743894A0E4A801FC3', 1, 1);Select SCOPE_IDENTITY()
      03:38:29.354 9 N - 檢查實體NewLife.CommonEntity.User的數據表架構,模式:CheckTableWhenFirstUse
      03:38:29.381 9 N - 創建表:User3(用戶)
      03:38:29.383 9 N - Create Table User3(
          ID int IDENTITY(1,1) Primary Key,
          Account nvarchar(50) NULL,
          Password nvarchar(50) NULL,
          IsAdmin bit NULL,
          IsEnable bit NULL
      )
      03:38:29.390 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'用戶' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User3'
      03:38:29.395 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'編號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User3', @level2type=N'COLUMN',@level2name=N'ID'
      03:38:29.401 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'賬號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User3', @level2type=N'COLUMN',@level2name=N'Account'
      03:38:29.407 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'密碼' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User3', @level2type=N'COLUMN',@level2name=N'Password'
      03:38:29.412 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'是否管理員' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User3', @level2type=N'COLUMN',@level2name=N'IsAdmin'
      03:38:29.420 9 N - EXEC dbo.sp_addextendedproperty @name=N'MS_Description', @value=N'是否啟用' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'User3', @level2type=N'COLUMN',@level2name=N'IsEnable'
      03:38:29.425 9 N - Create Unique Index IX_User3_Account On User3 (Account)
      03:38:29.431 9 N - select rows from sysindexes where id = object_id('User3') and indid in (0,1)
      03:38:29.440 9 N - 開始初始化User用戶數據……
      03:38:29.442 9 N - Select Count(*) From User3 Where Account=N'admin'
      03:38:29.446 9 N - SET NOCOUNT ON;Insert Into User3(Account, Password, IsAdmin, IsEnable) Values(N'admin', N'21232F297A57A5A743894A0E4A801FC3', 1, 1);Select SCOPE_IDENTITY()
      03:38:29.452 9 N - 完成初始化User用戶數據!
      03:38:29.455 9 N - Select * From User3 Where Account=N'大石頭2014/6/16 3:38:29' Order By ID Desc
      03:38:29.462 9 N - SET NOCOUNT ON;Insert Into User3(Account, Password, IsAdmin, IsEnable) Values(N'大石頭2014/6/16 3:38:29', N'21232F297A57A5A743894A0E4A801FC3', 1, 1);Select SCOPE_IDENTITY()

      日志中可以看到,第一次分表到User2時,XCode發現User2表不存在,馬上開動反向工程來創建一張一模一樣的表。該操作無視配置文件中關于反向工程的配置,即使配置關閉反向工程,這里仍然有效。
      我們還看到,User2表也進行了數據初始化,實體類User.InitData里面檢測數據表是否有數據,如果沒有,則自動添加一條。
      所以,數據初始化是表級有效,而不是實體類級別有效。
      在Insert User2之前,有一次根據Account的查詢,但是我們代碼里面并沒有這一次查詢,怎么回事?
      原來,Account是唯一索引,XCode的Valid會自動檢查,在數據插入到數據庫之前提前報警,而不是等待數據庫報錯。
      同樣,User3也經歷了這個過程!

      分表分庫,可以讓我們根據業務需要(一般是時間),把不同數據分散在不同數據庫和不同數據表中。
      因此,XCode能夠讓你的系統完全無視海量數據,完全無視性能!(分表后單表性能提升)

      當然,分表分庫的根基是反向工程,沒有它,你只能自己手工建立數據庫和數據表!
      我們相信,XCode的分表分庫功能在當下的數據映射框架中是獨一無二的!

      End.

      posted @ 2014-06-16 05:01  大石頭  閱讀(6240)  評論(17)    收藏  舉報
      主站蜘蛛池模板: 人人超人人超碰超国产| 亚洲国产精品日韩在线| 亚洲日韩久热中文字幕| 日韩精品人妻中文字幕| 日韩伦理片| 日本高清中文字幕免费一区二区| 中文字幕在线视频不卡一区二区| 国产成人欧美日韩在线电影| 亚洲春色在线视频| 亚洲国产精品久久久久4婷婷| 日本一级午夜福利免费区| 无码任你躁久久久久久久| 国产亚洲av手机在线观看| 国产乱国产乱老熟300部视频| 99久久精品国产一区二区| 人妻少妇偷人一区二区| 国产亚洲亚洲国产一二区| 久久天天躁狠狠躁夜夜婷| 国产日韩入口一区二区| 人人妻人人澡人人爽| 日韩人妻无码精品久久| 国产一区二区av天堂热| 久久久久无码国产精品一区| 国产精品黄色大片在线看| 成人3D动漫一区二区三区| 国产精品亚洲中文字幕| 国产在线午夜不卡精品影院| 另类 亚洲 图片 激情 欧美| 日韩一区二区三区在线观院| 国产美女久久久亚洲综合| 在线免费播放av观看| 欧美色aⅴ欧美综合色| 国产精品国产三级国快看| 亚洲欧美人成网站在线观看看| 99久久国产综合精品女图图等你| 狼人大伊人久久一区二区| 国产精品久久久久影院色| 国产高清乱码又大又圆| 午夜射精日本三级| 亚洲人成小说网站色在线| 亚洲 成人 无码 在线观看|