Code First

This commit is contained in:
sunkaixuan 2017-06-17 21:15:58 +08:00
parent 4a1172f4d6
commit 10d664ceab
6 changed files with 62 additions and 49 deletions

View File

@ -20,6 +20,7 @@ namespace OrmTest.Demo
public DateTime? DateTime { get; set; } public DateTime? DateTime { get; set; }
[SugarColumn(IsNullable = true)] [SugarColumn(IsNullable = true)]
public double? Dob { get; set; } public double? Dob { get; set; }
public string A { get; set; }
} }
public class CodeFirst : DemoBase public class CodeFirst : DemoBase
{ {
@ -32,9 +33,9 @@ namespace OrmTest.Demo
IsAutoCloseConnection = true, IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute InitKeyType = InitKeyType.Attribute
}); });
if (db.DbMaintenance.IsAnyTable("CodeTable")) //if (db.DbMaintenance.IsAnyTable("CodeTable"))
db.DbMaintenance.DropTable("CodeTable"); // db.DbMaintenance.DropTable("CodeTable");
db.DbMaintenance.BackupDataBase("SqlSugar4XTest","c:\\back\\1.bak"); //db.DbMaintenance.BackupDataBase("SqlSugar4XTest","c:\\back\\1.bak");
db.CodeFirst.InitTables(typeof(CodeTable)); db.CodeFirst.InitTables(typeof(CodeTable));
} }
} }

View File

@ -55,24 +55,6 @@ namespace SqlSugar
} }
} }
} }
public ICodeFirst IsBackupData(bool isBackupData = true)
{
_isBackupData = isBackupData;
return this;
}
public ICodeFirst IsBackupTable(bool isBackupTable = false)
{
_isBackupTable = isBackupTable;
return this;
}
public ICodeFirst IsDeleteNoExistColumn(bool isDeleteNoExistColumn = true)
{
_isDeleteNoExistColumn = isDeleteNoExistColumn;
return this;
}
#endregion #endregion
#region Core #region Core
@ -95,19 +77,7 @@ namespace SqlSugar
{ {
foreach (var item in entityInfo.Columns) foreach (var item in entityInfo.Columns)
{ {
DbColumnInfo dbColumnInfo = new DbColumnInfo() DbColumnInfo dbColumnInfo = EntityColumnToDbColumn(entityInfo, tableName, item);
{
Length = item.Length,
DataType = this.Context.Ado.DbBind.GetDbTypeName(PubMethod.GetUnderType(item.PropertyInfo).Name),
TableId = entityInfo.Columns.IndexOf(item),
DbColumnName = item.DbColumnName.IsValuable() ? item.DbColumnName : item.PropertyName,
IsPrimarykey = item.IsPrimarykey,
IsIdentity = item.IsIdentity,
TableName = tableName,
IsNullable = item.IsNullable,
DefaultValue = item.DefaultValue,
ColumnDescription = item.ColumnDescription
};
columns.Add(dbColumnInfo); columns.Add(dbColumnInfo);
} }
} }
@ -116,7 +86,19 @@ namespace SqlSugar
private void ExistLogic(EntityInfo entityInfo) private void ExistLogic(EntityInfo entityInfo)
{ {
throw new NotImplementedException(); if (entityInfo.Columns.IsValuable())
{
var tableName = GetTableName(entityInfo);
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
var errorColumns = dbColumns.Where(dbColumn => !entityInfo.Columns.Any(entityCoulmn => dbColumn.DbColumnName.Equals(entityCoulmn.DbColumnName))).ToList();
var addColumns= entityInfo.Columns.Where(entityColumn => !dbColumns.Any(dbColumn => entityColumn.DbColumnName.Equals(dbColumn.DbColumnName))).ToList();
foreach (var item in addColumns)
{
this.Context.DbMaintenance.AddColumnToTable(tableName,EntityColumnToDbColumn(entityInfo,tableName,item));
}
}
// this.Context.DbMaintenance.CreateTable(tableName, columns);
} }
public string GetCreateTableString(EntityInfo entityInfo) public string GetCreateTableString(EntityInfo entityInfo)
@ -138,6 +120,23 @@ namespace SqlSugar
{ {
return entityInfo.DbTableName == null ? entityInfo.EntityName : entityInfo.DbTableName; return entityInfo.DbTableName == null ? entityInfo.EntityName : entityInfo.DbTableName;
} }
private DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item)
{
return new DbColumnInfo()
{
Length = item.Length,
DataType = this.Context.Ado.DbBind.GetDbTypeName(PubMethod.GetUnderType(item.PropertyInfo).Name),
TableId = entityInfo.Columns.IndexOf(item),
DbColumnName = item.DbColumnName.IsValuable() ? item.DbColumnName : item.PropertyName,
IsPrimarykey = item.IsPrimarykey,
IsIdentity = item.IsIdentity,
TableName = tableName,
IsNullable = item.IsNullable,
DefaultValue = item.DefaultValue,
ColumnDescription = item.ColumnDescription
};
}
#endregion #endregion
} }
} }

View File

@ -92,22 +92,35 @@ namespace SqlSugar
{ {
string columnName = item.DbColumnName; string columnName = item.DbColumnName;
string dataType = item.DataType; string dataType = item.DataType;
string dataSize = item.Length > 0 ? string.Format("({0})",item.Length) : null; string dataSize = item.Length > 0 ? string.Format("({0})", item.Length) : null;
string nullType = item.IsNullable ? this.CreateTableNull : CreateTableNotNull; string nullType = item.IsNullable ? this.CreateTableNull : CreateTableNotNull;
string primaryKey =item.IsPrimarykey? this.CreateTablePirmaryKey:null; string primaryKey = item.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = item.IsIdentity? this.CreateTableIdentity:null; string identity = item.IsIdentity ? this.CreateTableIdentity : null;
string addItem= string.Format(this.CreateTableColumn, columnName, dataType, dataSize, nullType, primaryKey,identity); string addItem = string.Format(this.CreateTableColumn, columnName, dataType, dataSize, nullType, primaryKey, identity);
columnArray.Add(addItem); columnArray.Add(addItem);
} }
string tableString = string.Format(this.CreateTableSql,tableName, string.Join(",\r\n", columnArray)); string tableString = string.Format(this.CreateTableSql, tableName, string.Join(",\r\n", columnArray));
return tableString; return tableString;
} }
public virtual string GetAddColumnSql(string tableName, DbColumnInfo columnInfo)
{
string columnName = columnInfo.DbColumnName;
string dataType = columnInfo.DataType;
string dataSize = columnInfo.Length > 0 ? string.Format("({0})", columnInfo.Length) : null;
string nullType = columnInfo.IsNullable ? this.CreateTableNull : CreateTableNotNull;
string primaryKey = columnInfo.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = columnInfo.IsIdentity ? this.CreateTableIdentity : null;
string result = string.Format(this.AddColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity);
return result;
}
#endregion #endregion
#region DDL #region DDL
public bool AddColumnToTable(string tableName, DbColumnInfo columnName) public bool AddColumnToTable(string tableName, DbColumnInfo columnName)
{ {
throw new NotImplementedException(); string sql = GetAddColumnSql(tableName, columnName);
this.Context.Ado.ExecuteCommand(sql);
return true;
} }
public virtual bool CreateTable(string tableName, List<DbColumnInfo> columns) public virtual bool CreateTable(string tableName, List<DbColumnInfo> columns)
@ -116,8 +129,9 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(sql); this.Context.Ado.ExecuteCommand(sql);
return true; return true;
} }
public bool DropTable(string tableName) { public bool DropTable(string tableName)
this.Context.Ado.ExecuteCommand(string.Format(this.DropTableSql,tableName)); {
this.Context.Ado.ExecuteCommand(string.Format(this.DropTableSql, tableName));
return true; return true;
} }
public virtual bool TruncateTable(string tableName) public virtual bool TruncateTable(string tableName)
@ -128,8 +142,9 @@ namespace SqlSugar
public bool BackupDataBase(string databaseName, string fullFileName) public bool BackupDataBase(string databaseName, string fullFileName)
{ {
var directory=FileHelper.GetDirectoryFromFilePath(fullFileName); var directory = FileHelper.GetDirectoryFromFilePath(fullFileName);
if (!FileHelper.IsExistDirectory(directory)) { if (!FileHelper.IsExistDirectory(directory))
{
FileHelper.CreateDirectory(directory); FileHelper.CreateDirectory(directory);
} }
this.Context.Ado.ExecuteCommand(string.Format(this.BackupDataBaseSql, databaseName, fullFileName)); this.Context.Ado.ExecuteCommand(string.Format(this.BackupDataBaseSql, databaseName, fullFileName));

View File

@ -7,9 +7,6 @@ namespace SqlSugar
public partial interface ICodeFirst public partial interface ICodeFirst
{ {
SqlSugarClient Context { get; set; } SqlSugarClient Context { get; set; }
ICodeFirst IsBackupTable(bool isBackupTable = true);
ICodeFirst IsBackupData(bool isBackupData = true);
ICodeFirst IsDeleteNoExistColumn(bool isDeleteNoExistColumn = true);
void InitTables(string entitiesNamespace); void InitTables(string entitiesNamespace);
void InitTables(string [] entitiesNamespaces); void InitTables(string [] entitiesNamespaces);
void InitTables(Type [] entityTypes); void InitTables(Type [] entityTypes);

View File

@ -29,6 +29,7 @@ namespace SqlSugar
#region Get Sql #region Get Sql
string GetCreateTableSql(string tableName, List<DbColumnInfo> columns); string GetCreateTableSql(string tableName, List<DbColumnInfo> columns);
string GetAddColumnSql(string tableName, DbColumnInfo columnName);
#endregion #endregion
#region DDL #region DDL

View File

@ -79,7 +79,7 @@ namespace SqlSugar
{ {
get get
{ {
return "ALERT TABLE {0} ADD {1} {2} {3}"; return "ALERT TABLE {0} ADD {1} {2}{3} {4} {5} {6}";
} }
} }
protected override string AlterColumnToTableSql protected override string AlterColumnToTableSql