Overall I think they are great! So far from my evaluation I think CodeBreeze is great! (I'm using build 89 of CodeBreeze.) Not sure what kind of feedback you're looking for here, but there seems to be a bug in the DataPortal_Create; This is best explained by pasting the code: There is a property registration for the primary key of the class as follows:
Protected
Shared budgetIDProperty As PropertyInfo(Of Int32) = _
RegisterProperty(Of Int32)( GetType(Budget), New PropertyInfo(Of Int32)("BudgetID"))
But the DataPortal_Create is trying to load the above int32 property with a GUID:
Protected
Overrides Sub DataPortal_Create()
LoadProperty(
Of Int32)(budgetIDProperty, Guid.NewGuid())
ValidationRules.CheckRules()
End Sub
This results in a "GUID cannot be converted to Int" compile-time error. (I have also generated code using the CSLA2005 templates and I see this same error happens there though.)
Then there seems to be a problem in the DataPortal_Delete on a business entity that was generated off a table that has a multi-column primary key: It calls the correct dal.Delete method, but it is using a criteria of type SingleCriteria, and passing this criteria's value to the dal.Delete method. Meanwhile, the stored procedure (and subsequent wrapper) for the delete was correctly generated to require a parameter for each column making up the primary key. Herewith the generated DataPortal_Delete:
<Transactional(TransactionalTypes.TransactionScope)> _
Protected Overloads Sub DataPortal_Delete(ByVal criteria As SingleCriteria(Of XActionSplit,Int32))
Using dal As New DataAccess(False)
Using reader As
SafeDataReader = dal.XActionSplitDelete(criteria.Value) '[compile-time error here indicating that more parameters should be added here]
End Using
End Using
End Sub
And herewith the correctly-generated delete wrapper in the dal:
Public
Function XActionSplitDelete(ByVal p_XActionID As Int32, ByVal p_CategoryID As Int32) As SafeDataReader
Dim parameters As IDataParameter() = _
{ _
DirectCast(GetParameter("@p_XActionID", p_XActionID), IDataParameter), _
DirectCast(GetParameter("@p_CategoryID", p_CategoryID), IDataParameter) _
}
Return GetReader("XActionSplitDelete", CommandType.StoredProcedure, parameters)
End Function