マイクロ・シグナル█ 3776★2320★188 █ █ █ █ドナーの卵管の意味█ █ █ █ █ █性別を選択男の子の █ █ █ █チューブパッケージ生まれ█ █ █ █ドナー卵の少年█ █ █ █生まれドナー卵のパッケージを█ █ █の3つの世代の選択のセックス█ █ █ █試験管ベビー男の子█ █ █ 試験管病院でドナー卵█ █ █
FreeSqlは、オブジェクトリレーショナルマッパーのための強力な.NETStandardライブラリです(O / RM)、.NETCore 2.1+または.NETFramework 4.6.1+(QQグループ:4336577)をサポートしています。
原因ろうそく、価値がないフレームワークの使用にブロックされた。ユーザーがめったにによる交通渋滞、許さに対して、質問、エンコード処理を依頼していないことが理解されます。私たちのスローガン:最も便利には、.NET ORMを行います!すべての開発者は喜んで口まで91です!
全体的な機能
-
IFreeSqlコア、元の使用を提供することです。
-
FreeSql.DbContext拡張パックは、オブジェクト指向(EFのような)の使用を提供することです。
-
FreeSql.Repository拡張パックは、ストレージ+ワーキングユニット(実際に拡張パッケージとDbContext)の使用が提供されます。
-
またFreeSql.Connection.Extensions同じ使用を提供するために、Dapperのような拡張パック、。
ソースアドレス:https://github.com/2881099/FreeSql、上記のここで紹介する各鎖の倉庫。
fsql= new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\document.db;Attachs=xxxtb.db;Pooling=true;Max Pool Size=10") .UseAutoSyncStructure(true) //自动迁移(CodeFirst) .Build();
AOP機能
今日はAOP既存の機能を果たしている、将来は、ユーザーのニーズを強化していきます。
監査CRUD
馬は996がサルを報告している、と述べました。ほとんどのプログラマのため、残業は良いことです。。。アイドラーない少なくとも、解雇されていません。
高いため、SQLショーの時間のかかる操作かのように、該当する監査機能はありません、それは調査が、起動報酬とあなたが(笑)離れて歩くことができないということができます。
シンプルなサポートするために、同様の機能をFreeSql:
fsql.Aop.CurdAfter = (s, e) => {
if (e.ElapsedMilliseconds > 200) { //记录日志 //发送短信给负责人 } };
はい、唯一のイベント、全体的な状況で役割を果たすことができます。
CurdAfterに加えて、CurdBefore(SQLの前に火災)があります。
監査移行スクリプト
FreeSql移行を来て、その後、長期鋸SQL文の移行は、あなたが疑問に思うかもしれません。
-
例えば、テーブルが作成されます。
-
そのようなフィールドが追加されたときに、
-
そのような修飾された場合は、フィールド名をテーブル名の変更など。
-
別の例である場合は、変更後のフィールドタイプ。
正式な環境がこれを置き換えるために、他のツールを使用することができ、これらの操作は、達成FreeSql.CodeFirstで基本的なケアを必要としませんが、我々は唯一の自動移行機能を使用して開発環境をお勧めします。
しかし、我々はまだロギングを行うためのプロジェクトを完了する必要があります。
fsql.Aop.SyncStructureBefore、仕事でfsql.Aop.SyncStructureAfterこれら二つの事象ますドル。
カスタムエンティティプロパティ
例えば、プロジェクト内の他のORM、そのようなefcoreを使用することであった、これはエンティティが[キー]に存在してもよいことを意味するが、それはFreeSql [カラム(IsPrimary = TRUE]異なります。
Q:なぜこれほど厄介なのFreeSql物理的性質?
:一貫性の使用を検討するために、すべてのユーザーが使用するように、またはそのような増分として使用されるべきである名前のフルメモリ特性、使用することなく、ColumnAttribute下で包装[カラム(IsIdentity =真)]に。
AOPのカスタム属性関数提供し、より多くのORMを共同所有するエンティティの特性を達成するため、重複定義された特性を避けるFreeSql。
fsql.Aop.ConfigEntity = (s, e) => {
var attr = e.EntityType.GetCustomAttributes( typeof(System.ComponentModel.DataAnnotations.Schema.TableAttribute), false).FirstOrDefault() as System.ComponentModel.DataAnnotations.Schema.TableAttribute; if (attr != null) e.ModifyResult.Name = attr.Name; //表名 }; fsql.Aop.ConfigEntityProperty = (s, e) => { if (e.Property.GetCustomAttributes( typeof(System.ComponentModel.DataAnnotations.KeyAttribute), false).Any()) e.ModifyResult.IsPrimary = true; //主键 };
このように、することができますし、設定などFreeSql EFCoreの物理的特性。他の増分のような楽観的ロックは、Yihuhuhuapiaoです。
カスタム式
内部FreeSql表現のサポートも非常によくやっている主要なデータベースの互換性の程度に、非常に豊富です。
支援の発現レベルに関連して、あなたはウィキにこちらをクリックすることができます:https://github.com/2881099/FreeSql/wiki/%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%87を%BD%のE6%を95%B0
そうであっても豊かな、それはまだ、ユーザーのニーズを満たすことができないFreeSqlインタフェースを解析するカスタム式を開きました。
fsql.Aop.ParseExpression = (s, e) => {
if (e.Expression.NodeType == Call && e.Expression.Name == "get_Item") e.Result = "1111"; };
ときe.Expressionは非常に複雑で、少し複雑な構文解析を、我々はまた、FreeSqlを呼び出すことと同じですe.FreeParse方法を提供しますが解析支援するためにエンジンを解析表現を構築しました。
Aop.Where
ISelect、IDeleteは、IUpdate 3つのオブジェクトが提供さ、.Where(ラムダ)動作を使用することができ、それは.Where(SQL)操作することができるFreeSql。
Aop.Whereはどこ条件を傍受するように配置されています。
fsql.Aop.Where = (s, e) => {
if (e.Parameter[0]?.ToString() == "1") e.IsCancel = true;