mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 18:22:23 +08:00
Insertable Add Return Entity
This commit is contained in:
@@ -21,20 +21,22 @@ namespace OrmTest.Demo
|
|||||||
var t2 = db.Insertable(insertObj).ExecuteCommand();
|
var t2 = db.Insertable(insertObj).ExecuteCommand();
|
||||||
|
|
||||||
//Insert reutrn Identity Value
|
//Insert reutrn Identity Value
|
||||||
var t3 = db.Insertable(insertObj).ExecuteReutrnIdentity();
|
var t3 = db.Insertable(insertObj).ExecuteReturnIdentity();
|
||||||
|
|
||||||
|
//Insert reutrn Identity Value
|
||||||
|
var t31 = db.Insertable(insertObj).ExecuteReturnEntity();
|
||||||
|
|
||||||
//Only insert Name and SchoolId
|
//Only insert Name and SchoolId
|
||||||
var t4 = db.Insertable(insertObj).InsertColumns(it => new { it.Name, it.SchoolId }).ExecuteReutrnIdentity();
|
var t4 = db.Insertable(insertObj).InsertColumns(it => new { it.Name, it.SchoolId }).ExecuteReturnIdentity();
|
||||||
var t4_1 = db.Insertable(insertObj).InsertColumns(it => it=="Name"||it== "SchoolId").ExecuteReutrnIdentity();
|
var t4_1 = db.Insertable(insertObj).InsertColumns(it => it=="Name"||it== "SchoolId").ExecuteReturnIdentity();
|
||||||
|
|
||||||
|
|
||||||
//Ignore TestId
|
//Ignore TestId
|
||||||
var t5 = db.Insertable(insertObj).IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteReutrnIdentity();
|
var t5 = db.Insertable(insertObj).IgnoreColumns(it => new { it.Name, it.TestId }).ExecuteReturnIdentity();
|
||||||
|
|
||||||
|
|
||||||
//Ignore TestId
|
//Ignore TestId
|
||||||
var t6 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").ExecuteReutrnIdentity();
|
var t6 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").ExecuteReturnIdentity();
|
||||||
|
|
||||||
|
|
||||||
//Use Lock
|
//Use Lock
|
||||||
|
@@ -38,7 +38,7 @@ namespace OrmTest.UnitTest
|
|||||||
Varbinary2 = null,
|
Varbinary2 = null,
|
||||||
String = "string"
|
String = "string"
|
||||||
};
|
};
|
||||||
var id = db.Insertable<DataTestInfo>(insertObject).ExecuteReutrnIdentity();
|
var id = db.Insertable<DataTestInfo>(insertObject).ExecuteReturnIdentity();
|
||||||
var data = db.Queryable<DataTestInfo>().InSingle(id);
|
var data = db.Queryable<DataTestInfo>().InSingle(id);
|
||||||
if (
|
if (
|
||||||
insertObject.Datetime1.ToString("yyyy-MM-dd HH:mm:ss") != data.Datetime1.ToString("yyyy-MM-dd HH:mm:ss") ||
|
insertObject.Datetime1.ToString("yyyy-MM-dd HH:mm:ss") != data.Datetime1.ToString("yyyy-MM-dd HH:mm:ss") ||
|
||||||
|
@@ -28,7 +28,7 @@ namespace OrmTest.UnitTest
|
|||||||
SchoolId = shoolValue
|
SchoolId = shoolValue
|
||||||
};
|
};
|
||||||
var x2 = db.Queryable<StudentEnum>().AS("student").Where(it => enums.Contains(it.SchoolId)).ToSql();
|
var x2 = db.Queryable<StudentEnum>().AS("student").Where(it => enums.Contains(it.SchoolId)).ToSql();
|
||||||
var id= db.Insertable(x).AS("student").ExecuteReutrnIdentity();
|
var id= db.Insertable(x).AS("student").ExecuteReturnIdentity();
|
||||||
var data = db.Queryable<StudentEnum>().AS("student").InSingle(id);
|
var data = db.Queryable<StudentEnum>().AS("student").InSingle(id);
|
||||||
shoolValue = SchoolEnum.UniversityOfOxford;
|
shoolValue = SchoolEnum.UniversityOfOxford;
|
||||||
var sql= db.Updateable<StudentEnum>().AS("student").UpdateColumns(it=>new StudentEnum() { Name="a" , SchoolId= shoolValue }).Where(it=>it.Id==id).ToSql();
|
var sql= db.Updateable<StudentEnum>().AS("student").UpdateColumns(it=>new StudentEnum() { Name="a" , SchoolId= shoolValue }).Where(it=>it.Id==id).ToSql();
|
||||||
|
@@ -100,7 +100,11 @@ namespace SqlSugar
|
|||||||
return mappingInfo == null ? dbColumnName : mappingInfo.DbColumnName;
|
return mappingInfo == null ? dbColumnName : mappingInfo.DbColumnName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public PropertyInfo GetProperty<T>(string dbColumnName)
|
||||||
|
{
|
||||||
|
var propertyName = GetPropertyName<T>(dbColumnName);
|
||||||
|
return typeof(T).GetProperties().First(it => it.Name == propertyName);
|
||||||
|
}
|
||||||
#region Primary key
|
#region Primary key
|
||||||
private static void SetColumns(EntityInfo result)
|
private static void SetColumns(EntityInfo result)
|
||||||
{
|
{
|
||||||
|
@@ -45,7 +45,7 @@ namespace SqlSugar
|
|||||||
RestoreMapping();
|
RestoreMapping();
|
||||||
return new KeyValuePair<string, List<SugarParameter>>(sql, InsertBuilder.Parameters);
|
return new KeyValuePair<string, List<SugarParameter>>(sql, InsertBuilder.Parameters);
|
||||||
}
|
}
|
||||||
public int ExecuteReutrnIdentity()
|
public int ExecuteReturnIdentity()
|
||||||
{
|
{
|
||||||
InsertBuilder.IsReturnIdentity = true;
|
InsertBuilder.IsReturnIdentity = true;
|
||||||
PreToSql();
|
PreToSql();
|
||||||
@@ -53,6 +53,17 @@ namespace SqlSugar
|
|||||||
RestoreMapping();
|
RestoreMapping();
|
||||||
return Ado.GetInt(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
return Ado.GetInt(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
||||||
}
|
}
|
||||||
|
public T ExecuteReturnEntity()
|
||||||
|
{
|
||||||
|
var result = InsertObjs.First();
|
||||||
|
var identityKeys=GetIdentityKeys();
|
||||||
|
if (identityKeys.Count == 0) return result;
|
||||||
|
var idValue = ExecuteReturnIdentity();
|
||||||
|
Check.Exception(identityKeys.Count > 1, "ExecuteReutrnEntity does not support multiple identity keys");
|
||||||
|
var identityKey = identityKeys.First();
|
||||||
|
this.Context.EntityProvider.GetProperty<T>(identityKey).SetValue(result,idValue,null);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Setting
|
#region Setting
|
||||||
@@ -79,7 +90,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public IInsertable<T> InsertColumns(Expression<Func<T, object>> columns)
|
public IInsertable<T> InsertColumns(Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it=>this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
||||||
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList();
|
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@@ -10,7 +10,8 @@ namespace SqlSugar
|
|||||||
public interface IInsertable<T>
|
public interface IInsertable<T>
|
||||||
{
|
{
|
||||||
int ExecuteCommand();
|
int ExecuteCommand();
|
||||||
int ExecuteReutrnIdentity();
|
int ExecuteReturnIdentity();
|
||||||
|
T ExecuteReturnEntity();
|
||||||
IInsertable<T> AS(string tableName);
|
IInsertable<T> AS(string tableName);
|
||||||
IInsertable<T> With(string lockString);
|
IInsertable<T> With(string lockString);
|
||||||
IInsertable<T> InsertColumns(Expression<Func<T, object>> columns);
|
IInsertable<T> InsertColumns(Expression<Func<T, object>> columns);
|
||||||
|
@@ -38,7 +38,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public int InsertReturnIdentity<T>(T insertObj) where T : class, new()
|
public int InsertReturnIdentity<T>(T insertObj) where T : class, new()
|
||||||
{
|
{
|
||||||
return this.Context.Insertable(insertObj).ExecuteReutrnIdentity();
|
return this.Context.Insertable(insertObj).ExecuteReturnIdentity();
|
||||||
}
|
}
|
||||||
public bool InsertRange<T>(T[] insertObjs) where T : class, new()
|
public bool InsertRange<T>(T[] insertObjs) where T : class, new()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user