SqlServerCodeFirst.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace SqlSugar
  6. {
  7. public class SqlServerCodeFirst:CodeFirstProvider
  8. {
  9. protected override string GetTableName(EntityInfo entityInfo)
  10. {
  11. var table= this.Context.EntityMaintenance.GetTableName(entityInfo.EntityName);
  12. var tableArray = table.Split('.');
  13. var noFormat = table.Split(']').Length==1;
  14. if (tableArray.Length > 1 && noFormat)
  15. {
  16. var dbMain = new SqlServerDbMaintenance() { Context = this.Context };
  17. var schmes = dbMain.GetSchemas();
  18. if (!schmes.Any(it => it.EqualCase(tableArray.First())))
  19. {
  20. return tableArray.Last();
  21. }
  22. else
  23. {
  24. return dbMain.SqlBuilder.GetTranslationTableName(table);
  25. }
  26. }
  27. else
  28. {
  29. return table;
  30. }
  31. }
  32. protected override void GetDbType(EntityColumnInfo item, Type propertyType, DbColumnInfo result)
  33. {
  34. if (!string.IsNullOrEmpty(item.DataType))
  35. {
  36. result.DataType = item.DataType;
  37. }
  38. else if (propertyType.IsEnum())
  39. {
  40. result.DataType = this.Context.Ado.DbBind.GetDbTypeName(item.Length > 9 ? UtilConstants.LongType.Name : UtilConstants.IntType.Name);
  41. }
  42. else
  43. {
  44. var name = GetType(propertyType.Name);
  45. result.DataType = this.Context.Ado.DbBind.GetDbTypeName(name);
  46. if (result.DataType == "varbinary" && item.Length == 0)
  47. {
  48. result.DataType = "varbinary(max)";
  49. }
  50. }
  51. }
  52. }
  53. }