一、实体类
using SqlSugar;
namespace ConsoleApp
{
[SugarTable("spark_admin.test")]
public class TestEntity
{
//[SugarColumn(ColumnName = "id")]
public long Id { get; set; }
//[SugarColumn(ColumnName = "name")]
public string Name { get; set; }
}
}
二、初始化表
执行 db2.CodeFirst.InitTables(typeof(TestEntity)); 报错
监测到的sql脚本如下:
辛苦大佬帮忙解答,谢谢!
@fate sta
:您好,
[SugarTable("spark_admin.test")]
,如果没有
spark_admin. 前缀,程序无法查询。达梦数据库中一个数据库实例下面有多个模式,不使用模式就找不到具体的表。
@fate sta
:
达梦数据库版本:V8
使用达梦的管理工具查询表的时候,表名称前面也是需要加上模式才能成功
连接字符串是这样的
string strConnForDM = "server=127.0.0.1;port=5236;user id=SYSDBA;password=sparkcn@com;database=SPARK_ADMIN_NEW;poolsize=5";
不加前缀的时候会报错,如下:
、
是我的连接字符串写的不对吗?
请大佬指点!谢谢。
@fate sta
:
还是在达梦数据库中测试,判断表是否存在
跟踪到的SQL如下:
查看SQL,里面并没有调用IsAnyTable()方法时传入的参数,“TEST_TABLE2”。
应该是个bug吧,辛苦您确认!
(1)我把跟踪到的sql复制到达梦管理器中,最后加上 and table_name = 'TEST_TABLE2' 这个条件,再执行就是正确的。
(2)我查看了您的项目源码
DmDbMaintenance 类中并没有重写 IsAnyTable() 方法,调用基类的 GetTableInfoList()
查看DmDbMaintenance类中的GetTableInfoListSql()方法,逻辑如下
与在控制台中跟踪到的sql语句是一致的。这个sql语句放到达梦管理器中执行是报错的。
通过以上两种方式,验证了我的猜想,判断达梦数据库中是否存在某个表的IsAnyTable()方法存在bug,应该重写。
包括DropTable()、InitTables() 等方法都是存在相同的问题。