当前位置: 首页 > 工具软件 > ICanPay > 使用案例 >

efcore mysql autofac_GitHub - alan841207/Zxw.Framework.NetCore: 基于EF Core的Code First模式的DotNetCore快速开...

董俊晖
2023-12-01

Zxw.Framework.NetCore

基于EF Core的Code First模式的DotNetCore快速开发框架

Nuget [最新版本:2.2.2.2]

Install-Package Zxw.Framework.NetCore -Version 2.2.2.2

dotnet add package Zxw.Framework.NetCore --version 2.2.2.2

开发环境

VS2017 / VS Code

.net core 2.2

支持的数据库

SQL Server

MySQL

Sqlite

InMemory

PostgreSQL

日志组件

log4net

DI组件

缓存组件使用

MemoryCacheAttribute :基于MemoryCache的缓存拦截组件

RedisCacheAttribute :基于Redis的缓存拦截组件

如何使用:

public interface ITutorClassTypeRepository:IRepository

{

[MemoryCache]//使用MemoryCache,缓存有效时间默认10分钟

IList GetByMemoryCached(Expression> where = null);

[RedisCache(Expiration = 5)]//使用Redis,缓存有效时间为5分钟

IList GetByRedisCached(Expression> where = null);

}

示例

.net framework版本地址

项目说明

更新日志

2019/08/11

1.重构代码生成器,分CodeFirst和DbFirst

a.启用代码生成器

//启用代码生成器

services.UseCodeGenerator(new CodeGeneratorOption());

b.使用代码生成器

//CodeFirst---根据model生成其他各层的代码

dbContext.CodeFirst().GenerateAll(ifExsitedCovered:true);

//DbFirst---根据现有数据表生成各层代码

dbCOntext.DbFirst().GenerateAll(ifExsitedCovered:true);

2.添加对APIController的代码生成

2019/04/25

1.修改缓存拦截器默认key格式为:{namespace}{class}{method}{参数值hashcode}

2.缓存拦截器添加对Task<>类型的支持

2019/04/18

1.删除触发器功能...

2.实现多数据库上下文。用法:

//注入数据库上下文

services.AddDbContextFactory(factory =>

{

factory.AddDbContext("db1", new DbContextOption(){ConnectionString = "User ID=postgres;Password=123456;Host=localhost;Port=5432;Database=ZxwPgDemo;Pooling=true;" });

factory.AddDbContext("db2", new DbContextOption() { ConnectionString = "" });

factory.AddDbContext("db3", new DbContextOption() { ConnectionString = "" });

});

//获取

public class TestController

{

public IDbContextCore DbContext1 { get; set; }

public IDbContextCore DbContext2 { get; set; }

public IDbContextCore DbContext3 { get; set; }

public TestController(DbContextFactory factory)

{

DbContext1 = factory.GetDbContext("db1");

DbContext2 = factory.GetDbContext("db2");

DbContext3 = factory.GetDbContext("db3");

}

public void Run()

{

var db = DbContext1.GetDatabase();

Console.WriteLine();

}

}

3.多数据库上下文支持属性注入,用法如下:(具体请参考单元测试)

public class TestRepository: BaseRepository, IMongoRepository

{

[FromDbContextFactory("db1")]

public IDbContextCore DbContext1 { get; set; }

[FromDbContextFactory("db2")]

public IDbContextCore DbContext2 { get; set; }

[FromDbContextFactory("db3")]

public IDbContextCore DbContext3 { get; set; }

public void Run()

{

Console.WriteLine("Over!");

}

public TestRepository(IDbContextCore dbContext) : base(dbContext)

{

}

}

2018/09/24

2018/08/26

1.添加自定义视图分页查询,数据库分页,目前只支持sqlserver

2.update packages

2018/07/06 合并dev分支到master

1.添加EFCore直接返回DataTable功能

2.DBFirst功能,目前仅支持SQL Server、MySQL、NpgSQL三种数据库。根据已存在的数据表直接生成实体代码,详见CodeGenerator

3.添加单元测试项目,并完成对以上两点新功能的测试

开源协议

本开源项目遵守MIT开源协议,请保留原作者出处。

 类似资料: