CodeFirst.InitTables怎么实现,不能编辑列和删除列但是可以新增列呢 返回
SqlSugar
沟通中
8
161
uslinsen 发布于1个月前
悬赏:0 飞吻
var typeBilder = db.DynamicBuilder().CreateClass("table1", new SugarTable(){}); //可以循环添加列 typeBilder.CreateProperty("Id",typeof(int),new SugarColumn(){IsPrimaryKey=true,IsIdentity=true}); typeBilder.CreateProperty("Name", typeof(string), new SugarColumn() { /*属性说明下面有*/ }); typeBilder.WithCache(); //缓存Key 表名+字段名称相加 //创建类 var type = typeBilder.BuilderType(); //创建表 db.CodeFirst.InitTables(type); new SugarTable() { IsDisabledDelete = true, IsDisabledUpdateAll = true }
使用这个后,既不能编辑、删除,也不能新增列
new SugarTable() { IsDisabledDelete = true } new SugarColumn() { IsDisabledAlterColumn = true }
这样好像也不能在使用 CodeFirst.InitTables 的时候阻止编辑列
有没有什么办法在使用CodeFirst.InitTables建表的时候,可以实现不能编辑和删除列,但是可以新增列呢
热忱回答(8)
-
fate sta VIP01个月前
new
SugarTable()
{
IsDisabledDelete =
true
,
}
这样就行了,禁止所有更新包括添加
0 回复 -
fate sta VIP01个月前
typeBilder.WithCache(); 去掉试试
0 回复 -
fate sta VIP01个月前
IsDisabledAlterColumn =
true 这个应该是有效的
0 回复 -
fate sta VIP01个月前
如果还有问题,说具体是哪个数据库
0 回复 -
uslinsen VIP01个月前
// 示例方法 public void Test3() { var typeBilder = db.DynamicBuilder().CreateClass("table1", new SugarTable() { IsDisabledDelete = true }); typeBilder.CreateProperty("Id", typeof(int), new SugarColumn() { IsPrimaryKey = true, IsIdentity = true }); typeBilder.CreateProperty("Name", typeof(string), new SugarColumn() { // 第二次执行Test3的时候,Length改为120 Length = 100 }); // 第二次执行Test3的时候取消注释 //typeBilder.CreateProperty("Name1", typeof(string), new SugarColumn() //{ //}); //创建类 var type = typeBilder.BuilderType(); //创建表 db.CodeFirst.InitTables(type); } // 这样写,第一次执行 Test3 的时候会创建,table1,及Id,Name两个字段 // 当第二次取消注释后执行 Test3 ,Name 长度会变为 120,会新增Name1 字段 // 我希望,第二次执行Test3 的时候,Name 的长度不变,达到执行InitTables函数的时候,除了第一次创建表之外,后面都只能新增字段,不能编辑和删除字段 // 主要是在低代码里面,编辑表字段还是太危险了,希望不能编辑和删除 // 我尝试过以下两种方法: new SugarTable() { IsDisabledDelete = true, IsDisabledUpdateAll = true } // 这种方法会导致新增列和编辑列都不生效,不满足需求 // 下面这种方法,感觉 IsDisabledAlterColumn 没有生效,当动态实体中的Length变化之后,数据库里面Name字段的长度也会被修改 typeBilder.CreateProperty("Name", typeof(string), new SugarColumn() { Length = 120, IsDisabledAlterColumn = true }); // 数据库是用的是 SQL Server
0 回复 -
fate sta VIP01个月前
sqlsugar升级到最新预览版本看看
0 回复 -
fate sta VIP01个月前
SqlSugarCore 5.1.4.167-preview21
动态建类建表最近加上去了
0 回复 -
uslinsen VIP01个月前
new SugarTable() { IsDisabledDelete = true } new SugarColumn() { IsDisabledAlterColumn = true } // 新版本用这两个属性配置配合可以实现,谢谢大佬指点
0 回复