@@ -54,8 +54,8 @@ async Task AddPrivAsync(TEntity data, bool isCheck, CancellationToken cancellati
5454 _db . OrmOriginal . SetEntityValueWithPropertyName ( _entityType , data , _tableIdentitys [ 0 ] . CsName , idtval ) ;
5555 _db . _entityChangeReport . Add ( new DbContext . EntityChangeReport . ChangeInfo { Object = data , Type = DbContext . EntityChangeType . Insert } ) ;
5656 Attach ( data ) ;
57- if ( _db . Options . EnableAddOrUpdateNavigateList )
58- await AddOrUpdateNavigateListAsync ( data , true , null , cancellationToken ) ;
57+ if ( _db . Options . EnableAddOrUpdateNavigate )
58+ await AddOrUpdateNavigateAsync ( data , true , null , cancellationToken ) ;
5959 }
6060 else
6161 {
@@ -65,8 +65,8 @@ async Task AddPrivAsync(TEntity data, bool isCheck, CancellationToken cancellati
6565 IncrAffrows ( 1 ) ;
6666 _db . OrmOriginal . MapEntityValue ( _entityType , newval , data ) ;
6767 Attach ( newval ) ;
68- if ( _db . Options . EnableAddOrUpdateNavigateList )
69- await AddOrUpdateNavigateListAsync ( data , true , null , cancellationToken ) ;
68+ if ( _db . Options . EnableAddOrUpdateNavigate )
69+ await AddOrUpdateNavigateAsync ( data , true , null , cancellationToken ) ;
7070 }
7171 return ;
7272 default :
@@ -78,17 +78,17 @@ async Task AddPrivAsync(TEntity data, bool isCheck, CancellationToken cancellati
7878 _db . OrmOriginal . SetEntityValueWithPropertyName ( _entityType , data , _tableIdentitys [ 0 ] . CsName , idtval ) ;
7979 _db . _entityChangeReport . Add ( new DbContext . EntityChangeReport . ChangeInfo { Object = data , Type = DbContext . EntityChangeType . Insert } ) ;
8080 Attach ( data ) ;
81- if ( _db . Options . EnableAddOrUpdateNavigateList )
82- await AddOrUpdateNavigateListAsync ( data , true , null , cancellationToken ) ;
81+ if ( _db . Options . EnableAddOrUpdateNavigate )
82+ await AddOrUpdateNavigateAsync ( data , true , null , cancellationToken ) ;
8383 return ;
8484 }
8585 break ;
8686 }
8787 }
8888 EnqueueToDbContext ( DbContext . EntityChangeType . Insert , CreateEntityState ( data ) ) ;
8989 Attach ( data ) ;
90- if ( _db . Options . EnableAddOrUpdateNavigateList )
91- await AddOrUpdateNavigateListAsync ( data , true , null , cancellationToken ) ;
90+ if ( _db . Options . EnableAddOrUpdateNavigate )
91+ await AddOrUpdateNavigateAsync ( data , true , null , cancellationToken ) ;
9292 }
9393 public Task AddAsync ( TEntity data , CancellationToken cancellationToken = default ) => AddPrivAsync ( data , true , cancellationToken ) ;
9494 async public Task AddRangeAsync ( IEnumerable < TEntity > data , CancellationToken cancellationToken = default )
@@ -120,9 +120,9 @@ async public Task AddRangeAsync(IEnumerable<TEntity> data, CancellationToken can
120120 _db . OrmOriginal . MapEntityValue ( _entityType , rets [ idx ++ ] , s ) ;
121121 IncrAffrows ( rets . Count ) ;
122122 AttachRange ( rets ) ;
123- if ( _db . Options . EnableAddOrUpdateNavigateList )
123+ if ( _db . Options . EnableAddOrUpdateNavigate )
124124 foreach ( var item in data )
125- await AddOrUpdateNavigateListAsync ( item , true , null , cancellationToken ) ;
125+ await AddOrUpdateNavigateAsync ( item , true , null , cancellationToken ) ;
126126 return ;
127127 default :
128128 if ( _tableIdentitys . Length == 1 )
@@ -138,9 +138,9 @@ async public Task AddRangeAsync(IEnumerable<TEntity> data, CancellationToken can
138138 foreach ( var item in data )
139139 EnqueueToDbContext ( DbContext . EntityChangeType . Insert , CreateEntityState ( item ) ) ;
140140 AttachRange ( data ) ;
141- if ( _db . Options . EnableAddOrUpdateNavigateList )
141+ if ( _db . Options . EnableAddOrUpdateNavigate )
142142 foreach ( var item in data )
143- await AddOrUpdateNavigateListAsync ( item , true , null , cancellationToken ) ;
143+ await AddOrUpdateNavigateAsync ( item , true , null , cancellationToken ) ;
144144 }
145145
146146 async public Task SaveManyAsync ( TEntity item , string propertyName , CancellationToken cancellationToken = default )
@@ -160,11 +160,11 @@ async public Task SaveManyAsync(TEntity item, string propertyName, CancellationT
160160 }
161161
162162 await DbContextFlushCommandAsync ( cancellationToken ) ;
163- var oldEnable = _db . Options . EnableAddOrUpdateNavigateList ;
164- _db . Options . EnableAddOrUpdateNavigateList = false ;
163+ var oldEnable = _db . Options . EnableAddOrUpdateNavigate ;
164+ _db . Options . EnableAddOrUpdateNavigate = false ;
165165 try
166166 {
167- await AddOrUpdateNavigateListAsync ( item , false , propertyName , cancellationToken ) ;
167+ await AddOrUpdateNavigateAsync ( item , false , propertyName , cancellationToken ) ;
168168 if ( tref . RefType == Internal . Model . TableRefType . OneToMany )
169169 {
170170 await DbContextFlushCommandAsync ( cancellationToken ) ;
@@ -197,10 +197,10 @@ async public Task SaveManyAsync(TEntity item, string propertyName, CancellationT
197197 }
198198 finally
199199 {
200- _db . Options . EnableAddOrUpdateNavigateList = oldEnable ;
200+ _db . Options . EnableAddOrUpdateNavigate = oldEnable ;
201201 }
202202 }
203- async Task AddOrUpdateNavigateListAsync ( TEntity item , bool isAdd , string propertyName , CancellationToken cancellationToken )
203+ async Task AddOrUpdateNavigateAsync ( TEntity item , bool isAdd , string propertyName , CancellationToken cancellationToken )
204204 {
205205 Func < PropertyInfo , Task > action = async prop =>
206206 {
@@ -213,15 +213,17 @@ async Task AddOrUpdateNavigateListAsync(TEntity item, bool isAdd, string propert
213213 switch ( tref . RefType )
214214 {
215215 case Internal . Model . TableRefType . OneToOne :
216- //var propValItem = GetItemValue(item, prop);
217- //for (var colidx = 0; colidx < tref.Columns.Count; colidx++)
218- //{
219- // var val = FreeSql.Internal.Utils.GetDataReaderValue(tref.RefColumns[colidx].CsType, _db.OrmOriginal.GetEntityValueWithPropertyName(_table.Type, item, tref.Columns[colidx].CsName));
220- // _db.OrmOriginal.SetEntityValueWithPropertyName(tref.RefEntityType, propValItem, tref.RefColumns[colidx].CsName, val);
221- //}
222- //if (isAdd) await refSet.AddAsync(propValItem);
223- //else await refSet.AddOrUpdateAsync(propValItem);
224- //return;
216+ refSet = GetDbSetObject ( tref . RefEntityType ) ;
217+ var propValItem = GetItemValue ( item , prop ) ;
218+ if ( propValItem == null ) return ;
219+ for ( var colidx = 0 ; colidx < tref . Columns . Count ; colidx ++ )
220+ {
221+ var val = FreeSql . Internal . Utils . GetDataReaderValue ( tref . RefColumns [ colidx ] . CsType , _db . OrmOriginal . GetEntityValueWithPropertyName ( _table . Type , item , tref . Columns [ colidx ] . CsName ) ) ;
222+ _db . OrmOriginal . SetEntityValueWithPropertyName ( tref . RefEntityType , propValItem , tref . RefColumns [ colidx ] . CsName , val ) ;
223+ }
224+ if ( isAdd ) await refSet . AddAsync ( propValItem ) ;
225+ else await refSet . AddOrUpdateAsync ( propValItem ) ;
226+ return ;
225227 case Internal . Model . TableRefType . ManyToOne :
226228 return ;
227229 }
@@ -441,9 +443,9 @@ async Task UpdateRangePrivAsync(IEnumerable<TEntity> data, bool isCheck, Cancell
441443 state . OldValue = item ;
442444 EnqueueToDbContext ( DbContext . EntityChangeType . Update , state ) ;
443445 }
444- if ( _db . Options . EnableAddOrUpdateNavigateList )
446+ if ( _db . Options . EnableAddOrUpdateNavigate )
445447 foreach ( var item in data )
446- await AddOrUpdateNavigateListAsync ( item , false , null , cancellationToken ) ;
448+ await AddOrUpdateNavigateAsync ( item , false , null , cancellationToken ) ;
447449 }
448450 #endregion
449451
0 commit comments