56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace SqlSugar
|
|
{
|
|
public class SqlServerCodeFirst:CodeFirstProvider
|
|
{
|
|
protected override string GetTableName(EntityInfo entityInfo)
|
|
{
|
|
var table= this.Context.EntityMaintenance.GetTableName(entityInfo.EntityName);
|
|
var tableArray = table.Split('.');
|
|
var noFormat = table.Split(']').Length==1;
|
|
if (tableArray.Length > 1 && noFormat)
|
|
{
|
|
var dbMain = new SqlServerDbMaintenance() { Context = this.Context };
|
|
var schmes = dbMain.GetSchemas();
|
|
if (!schmes.Any(it => it.EqualCase(tableArray.First())))
|
|
{
|
|
return tableArray.Last();
|
|
}
|
|
else
|
|
{
|
|
return dbMain.SqlBuilder.GetTranslationTableName(table);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return table;
|
|
}
|
|
}
|
|
|
|
protected override void GetDbType(EntityColumnInfo item, Type propertyType, DbColumnInfo result)
|
|
{
|
|
if (!string.IsNullOrEmpty(item.DataType))
|
|
{
|
|
result.DataType = item.DataType;
|
|
}
|
|
else if (propertyType.IsEnum())
|
|
{
|
|
result.DataType = this.Context.Ado.DbBind.GetDbTypeName(item.Length > 9 ? UtilConstants.LongType.Name : UtilConstants.IntType.Name);
|
|
}
|
|
else
|
|
{
|
|
var name = GetType(propertyType.Name);
|
|
result.DataType = this.Context.Ado.DbBind.GetDbTypeName(name);
|
|
if (result.DataType == "varbinary" && item.Length == 0)
|
|
{
|
|
result.DataType = "varbinary(max)";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|