I try to modify the CRUD properties of a BO. The BO has a primary key of type Guid (uniqueidentifier in SQL Server) which I set its default value on the BO_SetDefaultValues event. I have set the PrimaryKeyIsAutoIncremented to False. I have set the InsertUsingStoredProcedure to True and also defined a stored procedure name in the InsertStoredProcedureName property. I have set the UpdateConcurrencyType to OptimisticsTimestamp and also defined a column name in the RowVersionOrTimestamp column. I have defined this column as an output parameter in the insert stored procedure.
I add a new row with the BO.Add method, edit some data in the form and then call the Save method. The row is added ok in the data base, but the IsDirty flag remains True. I can see in the CurrentDataTable that the row added with the BO.Add member has still a RowState of DataViewRowState.Added after the Save. I guess this is why IsDirty is True. Is this supposed to happen, or am I doing something wrong?
Thank you for your time.
George Nentidis
try { BusinessLayer.TransactionBegin("", IsolationLevel.ReadUncommitted); mContactBO.Save(true); mContactAddressesBO.Save(true); BusinessLayer.TransactionCommit(""); } catch(Exception x) { BusinessLayer.TransactionRollback(""); }
will actually call the update or insert stored procedure of the mContactBO twice. Which might cause problems in the case of insertion.
Looks like a bug... I'm not sure we have a unit test to cover this scenario, so I'll have to step through it and verify.
Yes, this is a known issue and will be fixed within the next official release.
Since I had a backup of your database, I restored it and then started testing the DDT import. The reason all of your data types were incorrectly imported was due to the user-defined data types, which the DDT doesn't support. So I changed the import to test for this and instead of returning an Integer as the default, it actually extracts the underlying data type from the User-Defined definition so that the type actually comes into the DDT correctly. This will be included in the post I put out there at the end of the day.