mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 修复 InsertValueSql 在仓储插入后不返回最新值;
This commit is contained in:
@ -127,9 +127,9 @@ namespace FreeSql
|
||||
protected ConcurrentDictionary<string, EntityState> _states = new ConcurrentDictionary<string, EntityState>();
|
||||
TableInfo _tablePriv;
|
||||
protected TableInfo _table => _tablePriv ?? (_tablePriv = _db.OrmOriginal.CodeFirst.GetTableByEntity(_entityType));
|
||||
ColumnInfo[] _tableIdentitysPriv, _tableServerTimesPriv;
|
||||
ColumnInfo[] _tableIdentitysPriv, _tableReturnColumnsPriv;
|
||||
protected ColumnInfo[] _tableIdentitys => _tableIdentitysPriv ?? (_tableIdentitysPriv = _table.Primarys.Where(a => a.Attribute.IsIdentity).ToArray());
|
||||
protected ColumnInfo[] _tableServerTimes => _tableServerTimesPriv ?? (_tableServerTimesPriv = _table.Primarys.Where(a => a.Attribute.ServerTime != DateTimeKind.Unspecified).ToArray());
|
||||
protected ColumnInfo[] _tableReturnColumns => _tableReturnColumnsPriv ?? (_tableReturnColumnsPriv = _table.ColumnsByPosition.Where(a => a.Attribute.IsPrimary && a.Attribute.IsIdentity || string.IsNullOrWhiteSpace(a.DbInsertValue) == false).ToArray());
|
||||
protected Type _entityType = typeof(TEntity);
|
||||
public Type EntityType => _entityType;
|
||||
|
||||
@ -146,7 +146,7 @@ namespace FreeSql
|
||||
_entityType = entityType;
|
||||
_tablePriv = newtb ?? throw new Exception("DbSet.AsType 参数错误,请传入正确的实体类型");
|
||||
_tableIdentitysPriv = null;
|
||||
_tableServerTimesPriv = null;
|
||||
_tableReturnColumnsPriv = null;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ namespace FreeSql
|
||||
async Task AddPrivAsync(TEntity data, bool isCheck, CancellationToken cancellationToken)
|
||||
{
|
||||
if (isCheck && CanAdd(data, true) == false) return;
|
||||
if (_tableIdentitys.Length > 0)
|
||||
if (_tableReturnColumns.Length > 0)
|
||||
{
|
||||
//有自增,马上执行
|
||||
switch (_db.OrmOriginal.Ado.DataType)
|
||||
@ -46,7 +46,7 @@ namespace FreeSql
|
||||
case DataType.OdbcKingbaseES:
|
||||
case DataType.ShenTong:
|
||||
case DataType.Firebird: //firebird 只支持单条插入 returning
|
||||
if (_tableIdentitys.Length == 1)
|
||||
if (_tableIdentitys.Length == 1 && _tableReturnColumns.Length == 1)
|
||||
{
|
||||
await DbContextFlushCommandAsync(cancellationToken);
|
||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
|
||||
@ -98,7 +98,7 @@ namespace FreeSql
|
||||
await AddAsync(data.First(), cancellationToken);
|
||||
return;
|
||||
}
|
||||
if (_tableIdentitys.Length > 0)
|
||||
if (_tableReturnColumns.Length > 0)
|
||||
{
|
||||
//有自增,马上执行
|
||||
switch (_db.OrmOriginal.Ado.DataType)
|
||||
|
@ -32,7 +32,7 @@ namespace FreeSql
|
||||
void AddPriv(TEntity data, bool isCheck)
|
||||
{
|
||||
if (isCheck && CanAdd(data, true) == false) return;
|
||||
if (_tableIdentitys.Length > 0)
|
||||
if (_tableReturnColumns.Length > 0)
|
||||
{
|
||||
//有自增,马上执行
|
||||
switch (_db.OrmOriginal.Ado.DataType)
|
||||
@ -45,7 +45,7 @@ namespace FreeSql
|
||||
case DataType.OdbcKingbaseES:
|
||||
case DataType.ShenTong:
|
||||
case DataType.Firebird: //firebird 只支持单条插入 returning
|
||||
if (_tableIdentitys.Length == 1)
|
||||
if (_tableIdentitys.Length == 1 && _tableReturnColumns.Length == 1)
|
||||
{
|
||||
DbContextFlushCommand();
|
||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||
@ -101,7 +101,7 @@ namespace FreeSql
|
||||
Add(data.First());
|
||||
return;
|
||||
}
|
||||
if (_tableIdentitys.Length > 0)
|
||||
if (_tableReturnColumns.Length > 0)
|
||||
{
|
||||
//有自增,马上执行
|
||||
switch (_db.OrmOriginal.Ado.DataType)
|
||||
|
Reference in New Issue
Block a user