I found that the default behavior for updating a entity using SQL will try to update the RowGuid colomns, causing bugs for those of us using replication. I found a fix in part of an email by Taylor Durden (http://community.codesmithtools.com/forums/thread/23074.aspx) that goes like this:
and change this block in code around line 84 in \DataAccessLayer.SqlClient\StoredProceduresXml.cst
And this fixed this issue for me. I wanted to break this issue out into a seperate thread then Mr. Durden issue, but the credit belongs with him.
Jason R. Shaver
<Exception>
<Description>An exception of type 'System.Data.SqlClient.SqlException' occurred and was caught.</Description>
<DateTime>2007-04-01 11:49:49Z</DateTime>
<ExceptionType>System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>Updating columns with the rowguidcol property is not allowed.
The transaction ended in the trigger. The batch has been aborted.</Message>
<Source>.Net SqlClient Data Provider</Source>
<HelpLink />
<Property name="Errors">System.Data.SqlClient.SqlErrorCollection</Property>
<Property name="Class">16</Property>
<Property name="LineNumber">79</Property>
<Property name="Number">20062</Property>
<Property name="Procedure">MSmerge_upd_7C6E2A740CDA42EFA2E905527856E63E</Property>
<Property name="Server">data.jasonrshaver.com</Property>
<Property name="State">1</Property>
<Property name="ErrorCode">-2146232060</Property>
<Property name="Data">System.Collections.ListDictionaryInternal</Property>
<Property name="TargetSite">Void OnError(System.Data.SqlClient.SqlException, Boolean)</Property>
<StackTrace> at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteNonQuery(DbCommand command)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DbCommand command, DbTransaction transaction)
at MobilePro.Data.Utility.ExecuteNonQuery(TransactionManager transactionManager, DbCommand dbCommand) in C:\Users\jshaver\Desktop\Code\MobileProInvoice\MobilePro.Data (Generated)\MobilePro.Data\Utility.cs:line 385
at MobilePro.Data.SqlClient.SqlWebsiteAccountEmployeesProviderBase.Update(TransactionManager transactionManager, WebsiteAccountEmployees entity) in C:\Users\jshaver\Desktop\Code\MobileProInvoice\MobilePro.Data (Generated)\MobilePro.Data.SqlClient\SqlWebsiteAccountEmployeesProviderBase.generated.cs:line 806
at MobilePro.Data.Bases.EntityProviderBaseCore`2.Save(TransactionManager mgr, Entity entity) in C:\Users\jshaver\Desktop\Code\MobileProInvoice\MobilePro.Data (Generated)\MobilePro.Data\Bases\EntityProviderBaseCore.generated.cs:line 564
at MobilePro.Services.WebsiteAccountEmployeesServiceBase.Save(WebsiteAccountEmployees entity) in C:\Users\jshaver\Desktop\Code\MobileProInvoice\MobilePro.Data (Generated)\MobilePro.Services\WebsiteAccountEmployeesServiceBase.generated.cs:line 802</StackTrace>
<additionalInfo>
<info name="MachineName" value="PWS670" />
<info name="TimeStamp" value="4/1/2007 4:49:49 PM" />
<info name="FullName" value="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<info name="AppDomainName" value="7a3452bf-2-128199197582589499" />
<info name="ThreadIdentity" value="JASONRSHAVER\jshaver" />
<info name="WindowsIdentity" value="JASONRSHAVER\jshaver" />
</additionalInfo>
</Exception>