Update SqlServer IsAnyTable

This commit is contained in:
sunkaixuan 2022-04-23 21:52:22 +08:00
parent c133dcac08
commit b0323a90d3
2 changed files with 35 additions and 1 deletions

View File

@ -52,6 +52,13 @@ namespace OrmTest
catch catch
{ {
} }
try
{
Db.Ado.ExecuteCommand(@" create schema [ddd]");
}
catch
{
}
db.CodeFirst.InitTables<UnitTableName>(); db.CodeFirst.InitTables<UnitTableName>();
db.CodeFirst.InitTables<UnitGe>(); db.CodeFirst.InitTables<UnitGe>();
db.Insertable(new UnitGe() { geometry1 = "POINT (20 180)" }).ExecuteCommand(); db.Insertable(new UnitGe() { geometry1 = "POINT (20 180)" }).ExecuteCommand();
@ -67,6 +74,7 @@ namespace OrmTest
Db.CodeFirst.InitTables<UNITCODEFIRST131>(); Db.CodeFirst.InitTables<UNITCODEFIRST131>();
Db.CodeFirst.InitTables<UNITCOdEFIRST131>(); Db.CodeFirst.InitTables<UNITCOdEFIRST131>();
Db.CodeFirst.InitTables<UnitTableUserName>(); Db.CodeFirst.InitTables<UnitTableUserName>();
db.CodeFirst.InitTables<UnitTablename>();
} }
public class UnitCodeFirst131 public class UnitCodeFirst131
{ {
@ -104,7 +112,11 @@ namespace OrmTest
{ {
public string Id { get; set; } public string Id { get; set; }
} }
[SugarTable("ddd.UnitTableName", "备注")]
public class UnitTablename
{
public string Id { get; set; }
}
public class UnitDateOfTime2 public class UnitDateOfTime2
{ {

View File

@ -313,6 +313,28 @@ namespace SqlSugar
#endregion #endregion
#region Methods #region Methods
public override bool IsAnyTable(string tableName, bool isCache = true)
{
if (tableName.Contains("."))
{
var schemas = GetSchemas();
var first =this.SqlBuilder.GetNoTranslationColumnName(tableName.Split('.').First());
var schemaInfo= schemas.FirstOrDefault(it=>it.EqualCase(first));
if (schemaInfo == null)
{
return base.IsAnyTable(tableName, isCache);
}
else
{
var result= this.Context.Ado.GetInt($"select object_id('{tableName}')");
return result > 0;
}
}
else
{
return base.IsAnyTable(tableName, isCache);
}
}
public List<string> GetSchemas() public List<string> GetSchemas()
{ {
return this.Context.Ado.SqlQuery<string>("SELECT name FROM sys.schemas where name <> 'dbo'"); return this.Context.Ado.SqlQuery<string>("SELECT name FROM sys.schemas where name <> 'dbo'");