mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-31 15:56:25 +08:00
Code First
This commit is contained in:
parent
4a1172f4d6
commit
10d664ceab
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user