基於 fireasy 構建的 asp.net core 示例

来源:https://www.cnblogs.com/fireasy/archive/2018/01/25/8350159.html
-Advertisement-
Play Games

最近花時間弄了一個關於fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero 該 demo 演示瞭如何使用 fireasy 創建一個後臺的管理系統。解決方案包含 asp.net mvc5 和 asp.net core 兩個示例 ...


    最近花時間弄了一個關於fireasy使用的demo,已放到 github 上供大家研究,https://github.com/faib920/zero

    該 demo 演示瞭如何使用 fireasy 創建一個後臺的管理系統。解決方案包含 asp.net mvc5 和 asp.net core 兩個示例,使用 SQLite 資料庫,基於 easyui 1.4.3 構建。

    用戶名: admin 密碼: admin

特點

  • 資料庫操作與 entity framework 的用法較相似,也是使用 linq ,降低了學習成本,然而與後者所不同的是,提供了 Insert、Update、Delete、Batch 等方法更快捷地進行操作,更貼近於 sql 原生語言。
  • 基於 easyui 構建的後臺管理系統,view 層採用 ajax 進行數據交互,因此在 action 接收參數時,直接通過 json 反序列化的方式進行 model bind,這樣的好處是,對於複雜的提交的數據結構,比如多個 list,嵌套的對象等,都很容易在 action 里接收。
  • action 接收的實體對象能夠主動區分哪些屬性被修改,這得益於 LightEntityJsonConverter 轉換器,這樣,新增或修改時,不必考慮原有數據被覆蓋的可能。
  • 沒有創建 ViewModel,而直接使用 DataModel,這樣節省了很多開發時間,然而這樣帶來的一個問題,可能也是使用 entity framework 一樣面臨的問題,那就是 <b>延遲載入</b> 屬性會被一概序列化。因此 json 序列化也被優化過,採用 fireasy json serializer 能夠主動識別延遲載入對象。
  • 沒有 ViewModel,但是可以擴展更多的屬性給前端使用,在實體類_Ex 中,可以定義非 virtual 的屬性,然後用 ExtendAs 擴展方法,這樣避免了 new { } 這樣繁瑣的賦值操作。
  • services 是基於 AOP 的實例,提供了事務處理、緩存處理等攔截器,只需要標識特性就可以實現這些功能。這也必須使用 fireasy 的 IOC 容器。

項目結構

  • Fireasy.Zero.Models  實體模型
  • Fireasy.Zero.Infrastructure  基礎設施
  • Fireasy.Zero.Helpers  相關輔助
  • Fireasy.Zero.Services  數據服務
  • Fireasy.Zero.AspNet  Mvc5示例
  • Fireasy.Zero.AspNetCore  Core示例

Mvc5 配置

有關 fireasy 的配置請參考 web.config 里的 fireasy 小節,其中:

dataInstances 為資料庫實例配置,當前使用 sqlite 資料庫

containers 為IOC容器配置

mvc/bundles 配置bundle資源文件

註意 global 里對 fireasy 的配置,這些都是必要的

BundleManager.Config();

//MVC控制器工廠添加IOC容器
var container = ContainerUnity.GetContainer();
ControllerBuilder.Current.SetControllerFactory(new ControllerFactory(container));

//easyui驗證綁定
SettingsBindManager.RegisterBinder("validatebox", new ValidateBoxSettingBinder());
SettingsBindManager.RegisterBinder("numberbox", new NumberBoxSettingBinder());

//使用 LightEntity 反序列化轉換器
GlobalSetting.Converters.Add(new LightEntityJsonConverter());

//從 Container 里反轉類型反序列化
GlobalSetting.Converters.Add(new ContainerJsonConverter(container));

core 配置

以上面示例相似,core 的配置在 appsettings.json 里,也是對資料庫實例,IOC容器進行配置。

Startup 類文件里的配置

public void ConfigureServices(IServiceCollection services)
{
services.AddFireasy(Configuration)
    .AddIoc(ContainerUnity.GetContainer()); //添加IOC容器

services.AddMvc()
    .ConfigureFireasyMvc(options =>
    {
        options.Converters.Add(new LightEntityJsonConverter()); //action接收的實體對象,是經過 fireasy 底層處理過的
    })
    .ConfigureEasyUI();
}

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.功能 實現圖表的數據綁定,動態綁定,屬性更改綁定。 本文提供了一種思路。 2.原理 使用canvas繪製,使用反射來確定屬性的綁定。 3.效果: 柱狀圖效果: 曲線圖效果: 感謝閱讀。 源碼地址: https://files.cnblogs.com/files/lizhijian/ChartBa ...
  • 先看下前端: 寫代碼前先設置: 一:登錄QQ郵箱,點擊設置 二: 三: //下麵開始敲代碼。。。 //兩個命名空間 //using System.Net;//using System.Net.Mail; /// <summary> /// 發送驗證碼按鈕 /// </summary> /// <pa ...
  • .NET Framework 提升與COM組件、COM+服務、外部類型庫和許多操作系統服務進行交互。托管和非托管對象模型之間的數據類型、方法簽名和錯誤處理機制有所不同。 要簡化.NET Framework組件和非托管代碼之間的互操作並簡化遷移路徑,公共語言運行時(CLR)需對客戶端和服務端隱藏這些對 ...
  • 本文告訴大家從文件載入字體。在wpf 使用 fontfamily 顯示指定的 ttf 顯示字體 ...
  • 在網上有一個大神問我這樣的問題:在做UWP的項目,怎麼能讓焦點在點擊在頁面空白處時回到textbox中? 雖然我的小伙伴認為他這是一個 xy 問題,但是我還是回答他這個問題 ...
  • 以前的項目格式使用的是 csproj 的格式,但是 .net core 支持使用 project.json 格式的項目文件,後來還是決定不使用這個格式。 VS2017 的項目格式更好讀、更簡單而且減少了 git 衝突。 本文來告訴大家如何從 VS2015 和以前的項目格式修改為 VS2017 項目... ...
  • (1)下載erlang: http://www.erlang.org/download/otp_win64_17.3.exe 並安裝 (2)下載RabbitMQ: http://www.rabbitmq.com/ 並安裝 (3)下載並安裝好後找到服務啟動選項並打開rabbitmq服務 至此,rabb ...
  • 【先上一張效果圖】: 一、原理: 其實原理很簡單: 1.手機投屏到電腦; 2.截取投屏畫面的題目部分,進行識別,得到題目和三個答案; 3.將答案按照一定的演算法,進行搜索,得出推薦答案; 4.添加了一些其他輔助功能,比如:瀏覽器搜索結果展示、關鍵字高亮、瀏覽器可點擊等; 二、二營長,把我的義大利... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...