设为首页 加入收藏

TOP

基于EF Core的Code First模式的DotNetCore快速开发框架(一)
2017-10-16 18:19:50 】 浏览:2051
Tags:基于 Core Code First 模式 DotNetCore 快速 开发 框架

前言

最近接了几个小单子,因为是小单子,项目规模都比较小,业务相对来说,也比较简单。所以在选择架构的时候,考虑到效率方面的因素,就采取了asp.net+entity framework中的code first模式,从而可以进行快速开发。几个单子做完下来,顺便总结整理一下,近些时候也一直在学习dotnetcore,索性将项目都升级了,于是便有了这一套“基于EF Core的Code First模式的DotNetCore快速开发框架”。至于code first模式的优劣,此文将不再赘述。至于本文的目的,一是为了总结和整理工作这几年所学的一些知识,方便以后能够快速高效地接入项目中。再是分享出来,跟大家一起探讨学习,一起进步。欢迎各路大佬指正和建议^_^

 

项目地址:Zxw.Framework

项目架构

此项目主要分成两部分:Zxw.Framework.NetCore (核心类库)和 NetCore.Sample (示例)两部分。如图所示:

Zxw.Framework.NetCore 项目说明:

  • Attributes —— 一些常用的属性
  • CodeGenerator —— 代码生成器,用于生成Repository和Service层的代码
  • CodeTemplate —— Repository和Service层代码模板
  • EfDbContext —— EF上下文
  • Extensions —— 一些常用的扩展方法
  • Filters —— 一些常用的拦截器
  • Helpers —— 一些常用的帮助类
  • IoC —— IoC容器封装类,Autofac
  • IRepositories —— Repository接口类
  • IServices —— Service接口类
  • Middlewares —— 中间件
  • Models —— 实体接口类,IBaseModel<TKey>
  • Options —— 一些常用的配置类
  • Repositories —— Repository层的父类
  • Services —— Service层的父类

框架使用

NetCore.Sample 所示,按照此项目结构创建好:

  • Zxw.Framework.Website —— 网站
  • Zxw.Framework.Website.Controllers —— 控制器
  • Zxw.Framework.Website.IRepositories —— 仓储接口
  • Zxw.Framework.Website.IServices —— Service接口
  • Zxw.Framework.Website.Models —— 实体
  • Zxw.Framework.Website.Repositories —— 仓储
  • Zxw.Framework.Website.Services —— Services
  • Zxw.Framework.Website.ViewModels —— ViewModels

安装nuget package:

Install-Package Zxw.Framework.NetCore -Version 1.0.1

需要注意以下几点:

  1. 所有实体都需实现IBaseModel<TKey>接口(TKey是主键类型),如果需要在数据库中生成对应的数据表
  2. 如果IRepositories、IServices、Repositories、Services这四个项目没有单独建立,调用代码生成器生成的代码将存在于调用项目的目录下
  3. 利用代码生成器生成的代码文件需要手动添加到项目中

实体示例:

 1 using System.ComponentModel.DataAnnotations;
 2 using System.ComponentModel.DataAnnotations.Schema;
 3 using Zxw.Framework.NetCore.Models;
 4 
 5 namespace Zxw.Framework.Website.Models
 6 {
 7     public class TutorClassType:IBaseModel<int>
 8     {
 9         [Key]
10         [Column("TutorClassTypeId")]
11         public int Id { get; set; }
12 
13         [Required]
14         [StringLength(maximumLength:50)]
15         public string TutorClassTypeName { get; set; }
16         public bool Active { get; set; } = true;
17         [StringLength(maximumLength:200)]
18         public string Remark { get; set; }
19         public int TutorClassCount { get; set; }
20     }
21 }
View Code

在Startup.cs文件中使用:

  1 using System;
  2 using System.Text;
  3 using log4net;
  4 using log4net.Repository;
  5 using Microsoft.AspNetCore.Builder;
  6 using Microsoft.AspNetCore.Hosting;
  7 using Microsoft.Extensions.Caching.Distributed;
  8 using Microsoft.Extensions.Caching.Memory;
  9 using Microsoft.Extensions.Configuration;
 10 using Microsoft.Extensions.DependencyInjection;
 11 using Zxw.Framework.NetCore.EfDbContext;
 12 using Zxw.Framework.NetCore.Filters;
 13 using Zxw.Framework.NetCore.Helpers;
 14 using Zxw.Framework.NetCore.IoC;
 15 using Zxw.Framework.NetCore.Options;
 16 
 17 namespace Zxw.Framework.Website
 18 {
 19     public class Startup
 20     {
 21         public static ILoggerRepository repository { get; set; }
 22         public Startup(IConfiguration configuration)
 23         {
 24             Configuration = configuration;
 25             //初始化log4net
 26             repository = LogManager.CreateRepository("NETCoreRepository");
 27             Log4NetHelper.SetConfig(repository, "log4net.config");
 28         }
 29 
 30         public IConfiguration Configuration { get; }
 31 
 32         // This method ge
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇LED服务总结 下一篇项目中验证码的使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目