/// <summary> /// 该方法用于保存数据后,更新基表的信息 /// </summary> /// <param name="root"></param> /// <param name="obj"></param> private void OnDataInsert(DomainObject root, DomainObject obj, DynamicData objData) { SetDataProxy(obj, objData);//对于保存的对象,我们依然要同步数据代理 obj.MarkClean(); if (this.Type == DataTableType.AggregateRoot) { var ar = (IAggregateRoot)obj; DomainBuffer.Add(this.ObjectTip.ObjectType, ar.GetIdentity(), ar); } if (this.IsDerived || this.IsDynamic) { //如果是派生对象或者动态对象,那么我们需要更新基表信息 var inheritedRoot = this.InheritedRoot; using (var temp = SqlHelper.BorrowData()) { var data = temp.Item; if (this.Type != DataTableType.AggregateRoot) { data.Add(this.Root.TableIdName, GetObjectId(root)); } data.Add(EntityObject.IdPropertyName, GetObjectId(obj)); //修改类型码 var typeKey = this.IsDerived ? this.DerivedClass.TypeKey : this.DynamicType.Define.TypeName; data.Add(GeneratedField.TypeKeyName, typeKey); //更改基表的信息 var sql = inheritedRoot.GetUpdateSql(data); SqlHelper.Execute(inheritedRoot.Name, sql, data); } } }
/// <summary> /// 该方法用于修改数据后,更新基表的信息 /// </summary> /// <param name="root"></param> /// <param name="obj"></param> private void OnDataUpdate(DomainObject root, DomainObject obj) { obj.MarkClean(); //修改之后,就干净了 var id = GetObjectId(obj); //更新数据版本号 var target = this.IsDerived ? this.InheritedRoot : this; using (var temp = SqlHelper.BorrowData()) { var data = temp.Item; if (target.Type != DataTableType.AggregateRoot) { data.Add(target.Root.TableIdName, GetObjectId(root)); } data.Add(EntityObject.IdPropertyName, id); //更新版本号 SqlHelper.Execute(target.Name, target.SqlUpdateVersion, data); //更新代理对象的版本号 var dataVersion = target.Type == DataTableType.AggregateRoot ? this.GetDataVersion(id) : this.GetDataVersion(GetObjectId(root), id); obj.DataProxy.Version = dataVersion; } }
private void Supplement(DomainObject obj, DynamicData data, QueryLevel level) { var valueObject = obj as IValueObject; if (valueObject != null) { object id = null; if (data.TryGetValue(EntityObject.IdPropertyName, out id)) { valueObject.TrySetId((Guid)id); } } obj.MarkClean(); //对象从数据库中读取,是干净的 }
/// <summary> /// 该方法用于修改数据后,更新基表的信息 /// </summary> /// <param name="root"></param> /// <param name="obj"></param> private void OnDataUpdated(DomainObject root, DomainObject obj) { obj.MarkClean(); //修改之后,就干净了 var id = GetObjectId(obj); //更新数据版本号 var target = this.IsDerived ? this.InheritedRoot : this; using (var temp = SqlHelper.BorrowData()) { var data = temp.Item; if (target.Type != DataTableType.AggregateRoot) { data.Add(GeneratedField.RootIdName, GetObjectId(root)); } data.Add(EntityObject.IdPropertyName, id); if (this.IsEnabledMultiTenancy) { data.Add(GeneratedField.TenantIdName, AppSession.TenantId); } //更新版本号 SqlHelper.Execute(target.Name, target.SqlUpdateVersion, data); //更新代理对象的版本号 var dataVersion = target.Type == DataTableType.AggregateRoot ? this.GetDataVersion(id) : this.GetDataVersion(GetObjectId(root), id); obj.DataProxy.Version = dataVersion; } if (this.Type == DataTableType.AggregateRoot) { if (obj.IsMirror) { //镜像被修改了,对应的公共缓冲区中的对象也要被重新加载 DomainBuffer.Public.Remove(obj.ObjectType, id); } } this.Mapper.OnUpdated(obj, this); }
private void Supplement(DomainObject obj, DynamicData data) { //设置代理对象 SetDataProxy(obj, data); var valueObject = obj as ValueObject; if (valueObject != null) { object id = null; if (data.TryGetValue(EntityObject.IdPropertyName, out id)) { valueObject.SetId((Guid)id); } } obj.MarkClean(); //对象从数据库中读取,是干净的 }