C# 动态创建类,动态创建表,支持多库的数据库维护方案

科技资讯 投稿 5800 0 评论

C# 动态创建类,动态创建表,支持多库的数据库维护方案

 

1、创建表

中间标准:

5.1.3.44-preview06  推荐

string 设置长度的字符串

[SugarColumn(Length=10]

int 整数

 public int FieldName{ get; set; }

short 整数小
long 大数字

 public long FieldName{ get; set; }

bool  真假
decimal  默认

 public decimal  FieldName{ get; set; }

decimal  自定义

//18,2  18,4 18,6 这几种兼容性好

public decimal  FieldName{ get; set; } 

DateTime 时间

public DateTime FieldName{ get; set; }

枚举 (数据库存int)
byte[] 二进制

public byte[]  FileInfo{get;set;}

对多库支持了比较好

     DbType = SqlSugar.DbType.SqlServer,
    ConnectionString ="字符串",
    IsAutoCloseConnection = true,
     MoreSettings=new ConnMoreSettings( {

           SqlServerCodeFirstNvarchar= true, 

     }

 

1.1通过特性建表

public class CodeFirstTable1
{
        [SugarColumn(IsIdentity = true, IsPrimaryKey = true]
        public int Id { get; set; } 
        public string Name { get; set; }
        //ColumnDataType 自定格式的情况 length不要设置 (想要多库兼容看4.2和9)
        [SugarColumn(ColumnDataType = "Nvarchar(255"]
        public string Text { get; set; }
        [SugarColumn(IsNullable = true]//可以为NULL
        public DateTime CreateTime { get; set; }
}
 
/***创建单个表***/
db.CodeFirst.SetStringDefaultLength(200.InitTables(typeof(CodeFirstTable1;//这样一个表就能成功创建了
/***手动建多个表***/
db.CodeFirst.SetStringDefaultLength(200
.InitTables(typeof(CodeFirstTable1,typeof(CodeFirstTable2; 

建表特性如下

名称 描述
IsIdentity 是否创建自增标识
IsPrimaryKey 是否创建主键标识
ColumnName 创建数据库字段的名称(默认取实体类属性名称)
ColumnDataType

用法1: “varchar(20” 不需要设置长度

用法3:       多库兼容可以用 :看标题9

IsIgnore ORM不处理该列
ColumnDescription 备注 表注释 (新版本支持XML文件)
Length 长度 设成10会生成   xxx类型(10, 没括号的不设置
IsNullable 是否可以为null默为false
DecimalDigits 精度 如 decimal(18,2 length=18,DecimalDigits=2
OracleSequenceName 设置Oracle序列,设置后该列等同于自增列
OldColumnName 修改列名用,这样不会新增或者删除列
IndexGroupNameList 已弃用,新用法看文档4.3
UniqueGroupNameList 已弃用,新用法看文档4.3

DefaultValue 

DefaultValue=默认值 用来建表设置字段默认值

很多情况需要2个一起使用

如果建表并且插入数据用2个

2.2无特性建表

如果我们的实体不需要加特性,那么我们可以通过特性方式建表

SugarClient db = new SqlSugarClient(new ConnectionConfig(
{
    DbType = DbType.SqlServer,
    ConnectionString = Config.ConnectionString3,
    InitKeyType = InitKeyType.Attribute,
    IsAutoCloseConnection = true,
    ConfigureExternalServices = new ConfigureExternalServices(
    {
        EntityService = (s, p =>
        {
            //如果是Order实体进行相关配置
            p.IfTable<Order>(
            .UpdateProperty(it => it.id, it =>
            {
                it.IsIdentity = true;
                it.IsPrimarykey = true;
            }
            .UpdateProperty(it => it.Name, it => {
                it.Length = 100;
                it.IsNullable = true;
  
            }
            .OneToOne(it => it.Item, nameof(Order.ItemId;
              
            //如果Custom实体进行相关配置
             p.IfTable<Custom>(
             .UpdateProperty(it => it.id, it =>
             {
                it.IsIdentity = true;
                it.IsPrimarykey = true;
             }
              .UpdateProperty(it => it.Text, it => {
                it.DataType= StaticCo

编程笔记 » C# 动态创建类,动态创建表,支持多库的数据库维护方案

赞同 (34) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽