c语言sscanf函数的用法是什么
262
2022-12-02
自动生成仓储结构、实体结构 T4模板
使用T4模板自动生成需要的数据库实体类、仓储类、仓储接口
提供的项目
AutoInfrastructGenerate - 提供基础生成实体(实体基础结构-不读取数据库-可手动扩展读取特定数据库实体类型)、仓储 -T4模板GenEntities-Mysql - 读取mysql中的表自动生成实体及仓储OracleGenerate - 读取oracle中的表自动生成实体 -读取oracle基表
AutoInfrastructGenerate
Entity.tt中提供了主要的逻辑Manager.ttinclude中提供了文件相关操作
OracleGenerate
AppSetting.json中保存了数据库连接字符串
原理
-- 获取用户创建的表select table_name from user_tables select * from user_tables where Table_Name = 'T_USER';--获取表字段select* from user_tab_columns where Table_Name = 'T_USER';--获取表注释select* from user_tab_comments user_tab_comments where Table_name='T_USER';--获取字段注释select * from user_col_comments where Table_name='T_USER';--获取主键select * --col.column_name from user_constraints con, user_cons_columns col where con.constraint_name = col.constraint_name and con.constraint_type='P' and col.table_name = 'T_USER'
基本数据配置
string baseNamespaceName="MES.Server.Manufacture"; //基础名称空间 string entityNamespaceName="Domain.Entity"; //实体名称空间 string repositoryNamespaceName="Infrastruct.Repository"; //仓储名称空间 string iRepositoryNamespaceName="Domain.IRepository"; //仓储接口名称空间 string tableDesc="测试表"; string tableName="t_pd_wo_issue_material"; string entityFileName="WorkorderIssueMaterial"; //实体基本名称 string entityName=entityFileName+"Entity"; //实体文件名称 string repositoryName=entityFileName+"Repository"; //仓储名称 string iRepositoryName="I"+repositoryName; //仓储基类 var manager = Manager.Create(Host, GenerationEnvironment); bool isBaseRepository=true; //是否生成基础仓储模型
文件相关操作
var manager = Manager.Create(Host, GenerationEnvironment);//开始文件写入,后续输出将写入此文件manager.StartNewFile(entityName + ".cs","Entities"); //Entities为保存的目录名称manager.EndBlock(); //结束当前文件写入manager.Process(true); //解析文件,将生成的数据导入配置的文件中
GenEntities-Mysql
主要逻辑在Generate.tt文件中
另外Manager.ttinclude文件中包含了创建文件的操作,使用此方法需要将Generate.tt文件中hostspecific设置为true
<#@ template debug="false" hostspecific="true" language="C#" #>
更新
添加对仓储模式自动生成的支持,可用通过修改Generate.tt文件中的needRepository改为true生成实体对应的仓储可以配置仓储对应的实体类、仓储接口、仓储类、上下文类的名称空间以及上下文类的配置
//配置默认的名称空间 var nameSpace="TestNameSpace"; //实体类名称空间 var EntityNameSpace="TestEntity"; //仓储接口名称空间 var IRepositoryNameSpace="TestRepository.IRepository"; //仓库名称空间 var RepositoryNameSpace="TestRepository.Repository"; //上下文类 var dbContextType="TestCommonContext"; //上下文类名称空间 var DBContext="TestRepository.DbContexts";
数据库的相关配置如下
数据库连接var connectionString = @"Server=127.0.0.1;port=3306;database=tianleclass;charset=utf8;uid=root;password=root";// 需要解析的数据库var database = new List
如需将生成的文件输出到指定的位置,可以找到manager.StartNewFile方法的调用 第二个参数为希望生成的目录,基于项目目录的相对路径,尝试一下即可 另外预留了WCF的配置
// 是否是WCF服务模型bool serviceModel = false;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~