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; }
[SugarColumn(IsNullable = true)]
public double? Dob { get; set; }
public string A { get; set; }
}
public class CodeFirst : DemoBase
{
@ -32,9 +33,9 @@ namespace OrmTest.Demo
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
if (db.DbMaintenance.IsAnyTable("CodeTable"))
db.DbMaintenance.DropTable("CodeTable");
db.DbMaintenance.BackupDataBase("SqlSugar4XTest","c:\\back\\1.bak");
//if (db.DbMaintenance.IsAnyTable("CodeTable"))
// db.DbMaintenance.DropTable("CodeTable");
//db.DbMaintenance.BackupDataBase("SqlSugar4XTest","c:\\back\\1.bak");
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
#region Core
@ -95,19 +77,7 @@ namespace SqlSugar
{
foreach (var item in entityInfo.Columns)
{
DbColumnInfo dbColumnInfo = 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
};
DbColumnInfo dbColumnInfo = EntityColumnToDbColumn(entityInfo, tableName, item);
columns.Add(dbColumnInfo);
}
}
@ -116,7 +86,19 @@ namespace SqlSugar
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)
@ -138,6 +120,23 @@ namespace SqlSugar
{
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
}
}

View File

@ -92,22 +92,35 @@ namespace SqlSugar
{
string columnName = item.DbColumnName;
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 primaryKey =item.IsPrimarykey? this.CreateTablePirmaryKey:null;
string identity = item.IsIdentity? this.CreateTableIdentity:null;
string addItem= string.Format(this.CreateTableColumn, columnName, dataType, dataSize, nullType, primaryKey,identity);
string primaryKey = item.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = item.IsIdentity ? this.CreateTableIdentity : null;
string addItem = string.Format(this.CreateTableColumn, columnName, dataType, dataSize, nullType, primaryKey, identity);
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;
}
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
#region DDL
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)
@ -116,8 +129,9 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public bool DropTable(string tableName) {
this.Context.Ado.ExecuteCommand(string.Format(this.DropTableSql,tableName));
public bool DropTable(string tableName)
{
this.Context.Ado.ExecuteCommand(string.Format(this.DropTableSql, tableName));
return true;
}
public virtual bool TruncateTable(string tableName)
@ -128,8 +142,9 @@ namespace SqlSugar
public bool BackupDataBase(string databaseName, string fullFileName)
{
var directory=FileHelper.GetDirectoryFromFilePath(fullFileName);
if (!FileHelper.IsExistDirectory(directory)) {
var directory = FileHelper.GetDirectoryFromFilePath(fullFileName);
if (!FileHelper.IsExistDirectory(directory))
{
FileHelper.CreateDirectory(directory);
}
this.Context.Ado.ExecuteCommand(string.Format(this.BackupDataBaseSql, databaseName, fullFileName));

View File

@ -7,9 +7,6 @@ namespace SqlSugar
public partial interface ICodeFirst
{
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 [] entitiesNamespaces);
void InitTables(Type [] entityTypes);

View File

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

View File

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