您的位置:首页 > 编程语言 > ASP

基于 fireasy 构建的 asp.net core 示例

2018-01-25 10:46 429 查看
最近花时间弄了一个关于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();
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐