当数据库的表名与类名不一至时,我们就需要通过别名表的功能实现
//别名表的功能 public class MappingTable { public void Init() { Console.WriteLine("启动MappingTable.Init"); //单个设置 using (var db = SugarDao.GetInstance()) { var list = db.Queryable<V_Student>("Student").ToList();//查询的是 select * from student 而我的实体名称为V_Student } //全局设置 using (var db = SugarFactory.GetInstance()) { var list = db.Queryable<V_Student>().ToList();//查询的是 select * from student 而我的实体名称为V_Student } } /// <summary> /// 全局配置类 /// </summary> public class SugarConfigs { //key类名 value表名 public static List<KeyValue> MpList = new List<KeyValue>(){ new KeyValue(){ Key="FormAttr", Value="Flow_FormAttr"}, new KeyValue(){ Key="Student3", Value="Student"}, new KeyValue(){ Key="V_Student", Value="Student"} }; } /// <summary> /// SqlSugar实例工厂 /// </summary> public class SugarFactory { //禁止实例化 private SugarFactory() { } public static SqlSugarClient GetInstance() { string connection = SugarDao.ConnectionString; //这里可以动态根据cookies或session实现多库切换 var db = new SqlSugarClient(connection); db.SetMappingTables(SugarConfigs.MpList);//设置关联表 (引用地址赋值,每次赋值都只是存储一个内存地址) //批量设置别名表 //db.ClassGenerating.ForeachTables(db, tableName => //{ // db.AddMappingTable(new KeyValue() { Key = tableName.Replace("bbs.",""), Value = tableName }); //key实体名,value表名 //}); return db; } } }
2016 © CodeIsBug.comApache Licence 2.0