<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      FreeSql 支持 CodeFirst 遷移結(jié)構(gòu)至數(shù)據(jù)庫,這應該是(O/RM)必須標配的一個功能。


      與其他(O/RM)不同F(xiàn)reeSql支持更多的數(shù)據(jù)庫特性,而不只是支持基礎的數(shù)據(jù)類型,這既是優(yōu)點也是缺點,優(yōu)點是充分利用數(shù)據(jù)庫特性輔助開發(fā),缺點是切換數(shù)據(jù)庫變得困難。不同程序員的理念可能不太一致,作為功能庫FreeSql支持到了極致,至于是否使用是項目組技術(shù)衡量的另一個問題。


      盡管多種數(shù)據(jù)庫適配邏輯非常復雜,F(xiàn)reeSql始終秉承優(yōu)化程序開發(fā)習慣的原則盡量去實現(xiàn),中間碰到了一些非技術(shù)無法攻克的難題,比如數(shù)據(jù)庫的自定義類型,和實體類本身就是一種沖突,為了減少使用成本,諸如此類的數(shù)據(jù)庫功能沒有得到支持。
      IFreeSql fsql = new FreeSql.FreeSqlBuilder()
      .UseConnectionString(FreeSql.DataType.MySql, "Data
      Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial
      Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10")
      .UseAutoSyncStructure(true) //自動同步實體結(jié)構(gòu)【開發(fā)環(huán)境必備】 .Build();
      *
      《實體特性說明》
      <https://github.com/2881099/FreeSql/wiki/%e5%ae%9e%e4%bd%93%e7%89%b9%e6%80%a7>

      *
      《FluentApi,享受純凈實體類》 <https://github.com/2881099/FreeSql/wiki/FluentApi>

      *
      《導入數(shù)據(jù)庫特性,懶人專利》
      <https://github.com/2881099/FreeSql/wiki/%e5%af%bc%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93%e7%89%b9%e6%80%a7>

      *
      《Aop自定義特性,與其他 ORM 共用特性》
      <https://github.com/2881099/FreeSql/wiki/%e8%87%aa%e5%ae%9a%e4%b9%89%e7%89%b9%e6%80%a7>

      *
      《類型映射,一覽便知》
      <https://github.com/2881099/FreeSql/wiki/%e7%b1%bb%e5%9e%8b%e6%98%a0%e5%b0%84>

      *
      《導航關系配置》
      <https://github.com/2881099/FreeSql/wiki/%e5%ae%9e%e4%bd%93%e5%85%b3%e7%b3%bb>

      遷移結(jié)構(gòu)

      實體&表對比 添加 改名 刪除
      √ √ X
      實體屬性&字段對比 添加 修改可空 修改自增 修改類型 改名 刪除 備注
      √ √ √ √ √ X √
      為了保證安全,不提供刪除字段。

      警告:如果實體類屬性,與數(shù)據(jù)庫表字段不完整映射的時候,未映射的字段有可能發(fā)生丟失。

      原因:某些遷移對比操作是:創(chuàng)建臨時表、導入舊表數(shù)據(jù)、刪除舊表。

      FreeSql提供兩種CodeFirst移遷方法,自動和手動。

      自動同步實體結(jié)構(gòu)【開發(fā)環(huán)境必備】

      自動同步實體結(jié)構(gòu)到數(shù)據(jù)庫,程序運行中檢查實體表是否存在,然后遷移執(zhí)行創(chuàng)建或修改。
      fsql.CodeFirst.IsAutoSyncDataStructure = true;
      此功能默認為開啟狀態(tài),發(fā)布正式環(huán)境后,請修改此設置。

      雖然【自動同步實體結(jié)構(gòu)】功能開發(fā)非常好用,但是有個壞處,就是數(shù)據(jù)庫后面會很亂,沒用的字段可能一大堆,應盡量控制實體或?qū)傩悦男薷摹?br>
      禁用遷移

      當【實體類】對應的是數(shù)據(jù)庫【視圖】或者其他時,可通過 [Table(DisableSyncStructure = true)] 禁用指定的實體遷移操作。
      [Table(DisableSyncStructure = true)] class ModelDisableSyncStructure {
      [Column(IsPrimary = false)] public int pkid { get; set; } }
      備注

      FreeSql CodeFirst 支持將 c# 代碼內(nèi)的注釋,遷移至數(shù)據(jù)庫的備注。先決條件:

      1、實體類所在程序集,需要開啟 xml 文檔功能;

      2、xml 文件必須與程序集同目錄,且文件名:xxx.dll -> xxx.xml;

      手工同步實體結(jié)構(gòu)

      提供接口方法實現(xiàn)對比實體,與數(shù)據(jù)庫中的變化部分,返回SQL語句。
      var t1 = mysql.CodeFirst.GetComparisonDDLStatements<Topic>(); class Topic {
      [Column(IsIdentity = true, IsPrimary = true)] public int Id { get; set; }
      public int Clicks { get; set; } public string Title { get; set; } public
      DateTime CreateTime { get; set; } public ushort fusho { get; set; } } CREATE
      TABLE IF NOT EXISTS `cccddd`.`Topic` ( `Id` INT(11) NOT NULL AUTO_INCREMENT,
      `Clicks` INT(11) NOT NULL, `Title` VARCHAR(255), `CreateTime` DATETIME NOT
      NULL, `fusho` SMALLINT(5) UNSIGNED NOT NULL, PRIMARY KEY (`Id`) ) Engine=InnoDB
      CHARACTER SET utf8;
      提供接口方法實現(xiàn)同步結(jié)構(gòu)
      var t2 = fsql.CodeFirst.SyncStructure<Topic>(); //同步實體類型到數(shù)據(jù)庫
      實體特性

      指定實體的表名,指定 Name
      后,實體類名變化不影響數(shù)據(jù)庫對應的表。FreeSql盡量支持了對多數(shù)據(jù)庫或schema支持,不防試試指定表名為:其他數(shù)據(jù)庫.表名,不同數(shù)據(jù)庫的指定方式有差異,這一點以后深入解答。
      [Table(Name = "db2.tb_topic111")] class Topic { //... }

      無指定實體的表名,修改為實體類名。指定數(shù)據(jù)庫舊的表名,修改實體命名時,同時設置此參數(shù)為修改之前的值,CodeFirst才可以正確修改數(shù)據(jù)庫表;否則將視為【創(chuàng)建新表】。
      [Table(OldName = "Topic")] class Topic2 { //... } ALTER TABLE `cccddd`.`Topic`
      RENAME TO `cccddd`.`Topic2`;
      修改字段類型,把 Title 類型改為 varchar(128)。
      [Column(DbType = "varchar(128)")] public string Title { get; set; } ALTER
      TABLE `cccddd`.`Topic2` MODIFY `Title` VARCHAR(128);
      指定屬性的字段名,這樣指定后,修改實體的屬性名不影響數(shù)據(jù)庫對應的列。
      [Column(Name = "titl2")] public string Title { get; set; }

      無指定屬性的字段名,修改為屬性名,指定數(shù)據(jù)庫舊的列名,修改實體屬性命名時,同時設置此參數(shù)為修改之前的值,CodeFirst才可以正確修改數(shù)據(jù)庫字段;否則將視為【新增字段】。
      [Column(OldName = "Title2")] public string Title { get; set; } ALTER TABLE
      `cccddd`.`Topic2` CHANGE COLUMN `Title2` `Title` VARCHAR(255);
      系列文章導航

      *
      (一)入門 <https://www.cnblogs.com/FreeSql/p/11531300.html>

      *
      (二)自動遷移實體 <https://www.cnblogs.com/FreeSql/p/11531301.html>

      *
      (三)實體特性 <https://www.cnblogs.com/FreeSql/p/11531302.html>

      *
      (四)實體特性 Fluent Api <https://www.cnblogs.com/FreeSql/p/11531304.html>

      *
      (五)插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531306.html>

      *
      (六)批量插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531309.html>

      *
      (七)插入數(shù)據(jù)時忽略列 <https://www.cnblogs.com/FreeSql/p/11531316.html>

      *
      (八)插入數(shù)據(jù)時指定列 <https://www.cnblogs.com/FreeSql/p/11531318.html>

      *
      (九)刪除數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531320.html>

      *
      (十)更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531321.html>

      *
      (十一)更新數(shù)據(jù) Where <https://www.cnblogs.com/FreeSql/p/11531324.html>

      *
      (十二)更新數(shù)據(jù)時指定列 <https://www.cnblogs.com/FreeSql/p/11531327.html>

      *
      (十三)更新數(shù)據(jù)時忽略列 <https://www.cnblogs.com/FreeSql/p/11531334.html>

      *
      (十四)批量更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531335.html>

      *
      (十五)查詢數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531339.html>

      *
      (十六)分頁查詢 <https://www.cnblogs.com/FreeSql/p/11531341.html>

      *
      (十七)聯(lián)表查詢 <https://www.cnblogs.com/FreeSql/p/11531346.html>

      *
      (十八)導航屬性 <https://www.cnblogs.com/FreeSql/p/11531352.html>

      *
      (十九)多表查詢 <https://www.cnblogs.com/FreeSql/p/11531362.html>

      *
      (二十)多表查詢 WhereCascade <https://www.cnblogs.com/FreeSql/p/11531372.html>

      *
      (二十一)查詢返回數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531376.html>

      *
      (二十二)Dto 映射查詢 <https://www.cnblogs.com/FreeSql/p/11531381.html>

      *
      (二十三)分組、聚合 <https://www.cnblogs.com/FreeSql/p/11531384.html>

      *
      (二十四)Linq To Sql 語法使用介紹 <https://www.cnblogs.com/FreeSql/p/11531392.html>

      *
      (二十五)延時加載 <https://www.cnblogs.com/FreeSql/p/11531395.html>

      *
      (二十六)貪婪加載 Include、IncludeMany、Dto、ToList
      <https://www.cnblogs.com/FreeSql/p/11531404.html>

      *
      (二十七)將已寫好的 SQL 語句,與實體類映射進行二次查詢
      <https://www.cnblogs.com/FreeSql/p/11531416.html>

      *
      (二十八)事務 <https://www.cnblogs.com/FreeSql/p/11531423.html>

      *
      (二十九)Lambda 表達式 <https://www.cnblogs.com/FreeSql/p/11531425.html>

      *
      (三十)讀寫分離 <https://www.cnblogs.com/FreeSql/p/11531430.html>

      *
      (三十一)分區(qū)分表 <https://www.cnblogs.com/FreeSql/p/11531435.html>

      *
      (三十二)Aop <https://www.cnblogs.com/FreeSql/p/11531471.html>

      *
      (三十三)CodeFirst 類型映射 <https://www.cnblogs.com/FreeSql/p/11531543.html>

      *
      (三十四)CodeFirst 遷移說明

      *
      (三十五)CodeFirst 自定義特性 <https://www.cnblogs.com/FreeSql/p/11531576.html>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          激情五月伊人 | 综合色导航 | 大香蕉太香蕉成人现现 | 艳母在线视频 | 男人亚洲 | 色男天堂| 魏无羡被调教成肉奴19 | 17操视频网站在线看 | 大子在卫生间做爰电影 | 日韩在线视频看看 |