mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-20 04:48:16 +08:00
- 增加 ColumnAttribute 可插入(CanInsert)、可更新(CanUpdate);#99
This commit is contained in:
@ -34,14 +34,26 @@ namespace FreeSql.Internal.CommonProvider
|
||||
_table = _commonUtils.GetTableByEntity(typeof(T1));
|
||||
_noneParameter = _orm.CodeFirst.IsNoneCommandParameter;
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure && typeof(T1) != typeof(object)) _orm.CodeFirst.SyncStructure<T1>();
|
||||
IgnoreCanInsert();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AsType, Ctor, ClearData 三处地方需要重新加载
|
||||
/// </summary>
|
||||
protected void IgnoreCanInsert()
|
||||
{
|
||||
if (_table == null || _table.Type == typeof(object)) return;
|
||||
foreach (var col in _table.Columns.Values)
|
||||
if (col.Attribute.CanInsert == false)
|
||||
_ignore.Add(col.Attribute.Name, true);
|
||||
}
|
||||
protected void ClearData()
|
||||
{
|
||||
_insertIdentity = false;
|
||||
_source.Clear();
|
||||
_ignore.Clear();
|
||||
_params = null;
|
||||
IgnoreCanInsert();
|
||||
}
|
||||
|
||||
public IInsert<T1> WithTransaction(DbTransaction transaction)
|
||||
@ -569,6 +581,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var newtb = _commonUtils.GetTableByEntity(entityType);
|
||||
_table = newtb ?? throw new Exception("IInsert.AsType 参数错误,请传入正确的实体类型");
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(entityType);
|
||||
IgnoreCanInsert();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -40,8 +40,19 @@ namespace FreeSql.Internal.CommonProvider
|
||||
_noneParameter = _orm.CodeFirst.IsNoneCommandParameter;
|
||||
this.Where(_commonUtils.WhereObject(_table, "", dywhere));
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure && typeof(T1) != typeof(object)) _orm.CodeFirst.SyncStructure<T1>();
|
||||
IgnoreCanUpdate();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AsType, Ctor, ClearData 三处地方需要重新加载
|
||||
/// </summary>
|
||||
protected void IgnoreCanUpdate()
|
||||
{
|
||||
if (_table == null || _table.Type == typeof(object)) return;
|
||||
foreach (var col in _table.Columns.Values)
|
||||
if (col.Attribute.CanUpdate == false)
|
||||
_ignore.Add(col.Attribute.Name, true);
|
||||
}
|
||||
protected void ClearData()
|
||||
{
|
||||
_source.Clear();
|
||||
@ -51,6 +62,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
_setIncr.Clear();
|
||||
_params.Clear();
|
||||
_paramsSource.Clear();
|
||||
IgnoreCanUpdate();
|
||||
}
|
||||
|
||||
public IUpdate<T1> WithTransaction(DbTransaction transaction)
|
||||
@ -610,6 +622,7 @@ namespace FreeSql.Internal.CommonProvider
|
||||
var newtb = _commonUtils.GetTableByEntity(entityType);
|
||||
_table = newtb ?? throw new Exception("IUpdate.AsType 参数错误,请传入正确的实体类型");
|
||||
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(entityType);
|
||||
IgnoreCanUpdate();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -128,6 +128,8 @@ namespace FreeSql.Internal
|
||||
if (trycol._Uniques != null) attr._Uniques = trycol._Uniques;
|
||||
if (trycol.MapType != null) attr.MapType = trycol.MapType;
|
||||
if (trycol._Position != null) attr._Position = trycol.Position;
|
||||
if (trycol._CanInsert != null) attr._CanInsert = trycol.CanInsert;
|
||||
if (trycol._CanUpdate != null) attr._CanUpdate = trycol.CanUpdate;
|
||||
if (trycol.DbDefautValue != null) attr.DbDefautValue = trycol.DbDefautValue;
|
||||
}
|
||||
var attrs = proto.GetCustomAttributes(typeof(ColumnAttribute), false);
|
||||
@ -146,6 +148,8 @@ namespace FreeSql.Internal
|
||||
if (tryattr._Uniques != null) attr._Uniques = tryattr._Uniques;
|
||||
if (tryattr.MapType != null) attr.MapType = tryattr.MapType;
|
||||
if (tryattr._Position != null) attr._Position = tryattr.Position;
|
||||
if (tryattr._CanInsert != null) attr._CanInsert = tryattr.CanInsert;
|
||||
if (tryattr._CanUpdate != null) attr._CanUpdate = tryattr.CanUpdate;
|
||||
if (tryattr.DbDefautValue != null) attr.DbDefautValue = tryattr.DbDefautValue;
|
||||
}
|
||||
ColumnAttribute ret = null;
|
||||
@ -160,6 +164,8 @@ namespace FreeSql.Internal
|
||||
if (attr._Uniques != null) ret = attr;
|
||||
if (attr.MapType != null) ret = attr;
|
||||
if (attr._Position != null) ret = attr;
|
||||
if (attr._CanInsert != null) ret = attr;
|
||||
if (attr._CanUpdate != null) ret = attr;
|
||||
if (attr.DbDefautValue != null) ret = attr;
|
||||
if (ret != null && ret.MapType == null) ret.MapType = proto.PropertyType;
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user