再写一下仓储层的代码实现,这里需要注意一下,需要根据注入的IOptionsSnapshot来生成_dbOpion以及_dbConnection,上面留给大家的思考题答案就在这里,如下所示:
/** *┌──────────────────────────────────────────────────────────────┐ *│ 描 述:{Comment}接口实现 *│ 作 者:{Author} *│ 版 本:1.0 模板代码自动生成 *│ 创建时间:{GeneratorTime} *└──────────────────────────────────────────────────────────────┘ *┌──────────────────────────────────────────────────────────────┐ *│ 命名空间: {RepositoryNamespace} *│ 类 名: {ModelName}Repository *└──────────────────────────────────────────────────────────────┘ */ using Czar.Cms.Core.DbHelper; using Czar.Cms.Core.Options; using Czar.Cms.Core.Repository; using Czar.Cms.IRepository; using Czar.Cms.Models; using Microsoft.Extensions.Options; using System; namespace {RepositoryNamespace} { public class {ModelName}Repository:BaseRepository<{ModelName},{KeyTypeName}>, I{ModelName}Repository { public {ModelName}Repository(IOptionsSnapshot<DbOpion> options) { _dbOpion =options.Get("CzarCms"); if (_dbOpion == null) { throw new ArgumentNullException(nameof(DbOpion)); } _dbConnection = ConnectionFactory.CreateConnection(_dbOpion.DbType, _dbOpion.ConnectionString); } } }
接着就是代码生成器生成IRepository以及生成Repository的代码了!这部分代码如下图所示:
测试代码
重新执行下代码生成器的代码,测试的具体代码我已经放在GitHub上了,这里就不贴出来了,直接上生成结果如下图所示:
如上图所示:一次性生成了Models以及Repository,IRepository的代码,然后到每个文件夹里面把对应的代码拷贝到对应的项目里面吧。然后我们随便打开一下仓储以及仓储接口看下生成后的代码如下所示:
/** *┌──────────────────────────────────────────────────────────────┐ *│ 描 述:文章分类 *│ 作 者:yilezhu *│ 版 本:1.0 模板代码自动生成 *│ 创建时间:2018-12-18 13:28:43 *└──────────────────────────────────────────────────────────────┘ *┌──────────────────────────────────────────────────────────────┐ *│ 命名空间: Czar.Cms.IRepository *│ 接口名称: IArticleCategoryRepository *└──────────────────────────────────────────────────────────────┘ */ using Czar.Cms.Core.Repository; using Czar.Cms.Models; using System; namespace Czar.Cms.IRepository { public interface IArticleCategoryRepository : IBaseRepository<ArticleCategory, Int32> { } } /** *┌──────────────────────────────────────────────────────────────┐ *│ 描 述:文章分类接口实现 *│ 作 者:yilezhu *│ 版 本:1.0 模板代码自动生成 *│ 创建时间:2018-12-18 13:28:43 *└──────────────────────────────────────────────────────────────┘ *┌──────────────────────────────────────────────────────────────┐ *│ 命名空间: Czar.Cms.Repository.SqlServer *│ 类 名: ArticleCategoryRepository *└──────────────────────────────────────────────────────────────┘ */ using Czar.Cms.Core.DbHelper; using Czar.Cms.Core.Options; using Czar.Cms.Core.Repository; using Czar.Cms.IRepository; using Czar.Cms.Models; using Microsoft.Extensions.Options; using System; namespace Czar.Cms.Repository.SqlServer { public class ArticleCategoryRepository:BaseRepository<ArticleCategory,Int32>, IArticleCategoryRepository { public ArticleCategoryRepository(IOptionsSnapshot<DbOpion> options) { _dbOpion =options.Get("CzarCms"); if (_dbOpion == null) { throw new ArgumentNullException(nameof(DbOpion)); } _dbConnection = ConnectionFactory.CreateConnection(_dbOpion.DbType, _dbOpion.ConnectionString); } } }
在仓储层以及仓储接口层添加对Czar.Cms.Core的引用,当然你也可以通过Nuget包来进行安装
Install-Package Czar.Cms.Core -Version 0.1.3