@@ -147,7 +147,7 @@ public AdoNetRepositoryContext(DbConnection existingConnection, bool ensureDatab
147147
148148 #region Private Methods
149149
150- private void PrepareEntitySetQuery ( EntitySet entitySet , bool existInDb , out string sql , out Dictionary < string , object > parameters )
150+ private void PrepareEntitySetQuery ( EntitySet entitySet , out string sql , out Dictionary < string , object > parameters )
151151 {
152152 sql = string . Empty ;
153153 parameters = new Dictionary < string , object > ( ) ;
@@ -156,38 +156,31 @@ private void PrepareEntitySetQuery(EntitySet entitySet, bool existInDb, out stri
156156 {
157157 case EntityState . Added :
158158 {
159- if ( existInDb )
160- throw new InvalidOperationException ( string . Format ( CultureInfo . CurrentCulture , Resources . EntityAlreadyBeingTrackedInStore , entitySet . Entity . GetType ( ) ) ) ;
161-
162- QueryBuilder . CreateInsertStatement ( Conventions , entitySet . Entity , out sql , out parameters ) ;
163-
164- var canGetScopeIdentity = true ;
165-
166- #if NETFULL
167- if ( _dbHelper . ProviderType == DataAccessProviderType . SqlServerCompact )
168- canGetScopeIdentity = false ;
169- #endif
170-
171- if ( canGetScopeIdentity )
172- sql += $ "{ Environment . NewLine } SELECT SCOPE_IDENTITY()";
159+ QueryBuilder . CreateInsertStatement (
160+ Conventions ,
161+ entitySet . Entity ,
162+ out sql ,
163+ out parameters ) ;
173164
174165 break ;
175166 }
176167 case EntityState . Removed :
177168 {
178- if ( ! existInDb )
179- throw new InvalidOperationException ( Resources . EntityNotFoundInStore ) ;
180-
181- QueryBuilder . CreateDeleteStatement ( Conventions , entitySet . Entity , out sql , out parameters ) ;
169+ QueryBuilder . CreateDeleteStatement (
170+ Conventions ,
171+ entitySet . Entity ,
172+ out sql ,
173+ out parameters ) ;
182174
183175 break ;
184176 }
185177 case EntityState . Modified :
186178 {
187- if ( ! existInDb )
188- throw new InvalidOperationException ( Resources . EntityNotFoundInStore ) ;
189-
190- QueryBuilder . CreateUpdateStatement ( Conventions , entitySet . Entity , out sql , out parameters ) ;
179+ QueryBuilder . CreateUpdateStatement (
180+ Conventions ,
181+ entitySet . Entity ,
182+ out sql ,
183+ out parameters ) ;
191184
192185 break ;
193186 }
@@ -337,13 +330,9 @@ public int SaveChanges()
337330 var primaryKeyPropertyInfo = Conventions . GetPrimaryKeyPropertyInfos ( entityType ) . First ( ) ;
338331 var isIdentity = Conventions . IsColumnIdentity ( primaryKeyPropertyInfo ) ;
339332
340- // Checks if the entity exist in the database
341- var existInDb = _dbHelper . ExecuteObjectExist ( Conventions , command , entitySet . Entity ) ;
342-
343333 // Prepare the sql statement
344334 PrepareEntitySetQuery (
345335 entitySet ,
346- existInDb ,
347336 out string sql ,
348337 out Dictionary < string , object > parameters ) ;
349338
@@ -353,30 +342,17 @@ public int SaveChanges()
353342 command . Parameters . Clear ( ) ;
354343 command . AddParameters ( parameters ) ;
355344
345+ rows += _dbHelper . ExecuteNonQuery ( command ) ;
346+
356347 if ( entitySet . State == EntityState . Added && isIdentity )
357348 {
358- #if NETFULL
359- if ( _dbHelper . ProviderType == DataAccessProviderType . SqlServerCompact )
360- {
361- _dbHelper . ExecuteNonQuery ( command ) ;
362-
363- sql = "SELECT @@IDENTITY" ;
364- parameters . Clear ( ) ;
365-
366- command . CommandText = sql ;
367- command . Parameters . Clear ( ) ;
368- }
369- #endif
349+ command . CommandText = "SELECT @@IDENTITY" ;
350+ command . Parameters . Clear ( ) ;
351+
370352 var newKey = _dbHelper . ExecuteScalar < object > ( command ) ;
371353 var convertedKeyValue = Convert . ChangeType ( newKey , primaryKeyPropertyInfo . PropertyType ) ;
372354
373355 primaryKeyPropertyInfo . SetValue ( entitySet . Entity , convertedKeyValue , null ) ;
374-
375- rows ++ ;
376- }
377- else
378- {
379- rows += _dbHelper . ExecuteNonQuery ( command ) ;
380356 }
381357 }
382358 }
@@ -698,13 +674,9 @@ public IPagedQueryResult<IEnumerable<TResult>> GroupBy<TEntity, TGroupKey, TResu
698674 var primaryKeyPropertyInfo = Conventions . GetPrimaryKeyPropertyInfos ( entityType ) . First ( ) ;
699675 var isIdentity = Conventions . IsColumnIdentity ( primaryKeyPropertyInfo ) ;
700676
701- // Checks if the entity exist in the database
702- var existInDb = await _dbHelper . ExecuteObjectExistAsync ( Conventions , command , entitySet . Entity , cancellationToken ) ;
703-
704677 // Prepare the sql statement
705678 PrepareEntitySetQuery (
706679 entitySet ,
707- existInDb ,
708680 out string sql ,
709681 out Dictionary < string , object > parameters ) ;
710682
@@ -714,30 +686,17 @@ public IPagedQueryResult<IEnumerable<TResult>> GroupBy<TEntity, TGroupKey, TResu
714686 command . Parameters . Clear ( ) ;
715687 command . AddParameters ( parameters ) ;
716688
689+ rows += await _dbHelper . ExecuteNonQueryAsync ( command , cancellationToken ) ;
690+
717691 if ( entitySet . State == EntityState . Added && isIdentity )
718692 {
719- #if NETFULL
720- if ( _dbHelper . ProviderType == DataAccessProviderType . SqlServerCompact )
721- {
722- await _dbHelper . ExecuteNonQueryAsync ( command , cancellationToken ) ;
723-
724- sql = "SELECT @@IDENTITY" ;
725- parameters . Clear ( ) ;
726-
727- command . CommandText = sql ;
728- command . Parameters . Clear ( ) ;
729- }
730- #endif
693+ command . CommandText = "SELECT @@IDENTITY" ;
694+ command . Parameters . Clear ( ) ;
695+
731696 var newKey = await _dbHelper . ExecuteScalarAsync < object > ( command , cancellationToken ) ;
732697 var convertedKeyValue = Convert . ChangeType ( newKey , primaryKeyPropertyInfo . PropertyType ) ;
733698
734699 primaryKeyPropertyInfo . SetValue ( entitySet . Entity , convertedKeyValue , null ) ;
735-
736- rows ++ ;
737- }
738- else
739- {
740- rows += await _dbHelper . ExecuteNonQueryAsync ( command , cancellationToken ) ;
741700 }
742701 }
743702 }
0 commit comments