Chloe.ORM 实体批量生成

最近做的基本上都是做小网站,实在无聊,所以还是决定用这种小项目去踩踩坑,大概看了看,很多必须要用到的框架还是支持的,所以从这个项目开始,打算用.NET CORE 做,首先要解决的就是ORM上的问题。EF先不考虑,以前用了一段时间的EF,实在觉得难受,还是喜欢轻量级的东西。以前一直用DOS.ORM 感觉很顺手,可惜一直没出.NET CORE的版本,尝试多次之后,决定用Chloe.ORM

对于Chloe.ORM,这玩意是没实体生成器的,看了看群上,要么自己写,要么是用动软或其他软件生成,动软这东西实在太老了,试了下有问题,肯定果断放弃这东西了。然后用T4模板试下了,还是有问题,放弃。正当我有点焦灼的时候,突然想到DOS.ORM-TOOL 这东西是开源的,最开始是想稍微修改下源码,支持Chloe.ORM的实体生成就行了,没想到这东西已经完美支持模板生成了。实在开心,于是乎就有下面这么简单的模板去生成整个数据库的实体,这东西很强,简单无BUG,实在是好东西

dos.orm-tool GitHub地址:https://github.com/itdos/Dos.Tool

下载后在Template文件夹下建立一个chloe_mysql.tpl 然后把下面的代码复制进去,保存,在运行exe连接数据库,模板选择chloe_mysql.tpl 即可生成全部实体

后来发现没[NonAutoIncrementAttribute]这个标识好像有问题。。。无语,所以仔细看了看这个工具是可以加[AutoIncrementAttribute]和[NonAutoIncrementAttribute]这两个标识的

using System;
using Chloe.Entity;
namespace @Model.NameSpace
{
    /// <summary>
    /// 实体类@(Model.ClassName)。(属性说明自动提取数据库字段的描述信息)
    /// </summary>
    [TableAttribute("@Model.TableName")]
    [Serializable]
    public partial class @Model.ClassName
    {
        #region Model
@foreach(var item in Model.Columns)
{
        @:private @item.TypeName [email protected];
}
 
@foreach(var item in Model.Columns)
{
        @:/// <summary>
        @:/// @(item.DeText)
        @:/// </summary>
        if(item.IsPK){
        @:[ColumnAttribute(IsPrimaryKey = true)]
        if(Model.IdentityColumn != null&&item.ColumnName==Model.IdentityColumn.ColumnName)
        {
        @:[AutoIncrementAttribute]
        }
        else{
        @:[NonAutoIncrementAttribute]
        }
        }
        @:public @item.TypeName @item.ColumnName
        @:{
            @:get{ return [email protected]; }
            @:set
            @:{
                @:[email protected] = value;
            @:}
        @:}
}
        #endregion
}
}

猜你喜欢

转载自blog.csdn.net/binnygoal/article/details/81509181