Skip to content

Why use CslaGenFork

Tiago Freitas Leal edited this page Sep 17, 2017 · 5 revisions

Why would I use CslaGenFork?

Easy setup

  • It's the easiest way to start working with CSLA.NET
  • It has a proper installer that makes it easy for starters
  • It has a very very easy support for installing the free CodeSmith DLL (CodeSmith license compliant)
  • It allows you to configure the templates directory location

Versatile targets

  • It generates Silverlight and asynchronous methods (Technical Note)
  • It generates Encapsulated Invoke model with or without a separated DAL
  • It supports SQL Server as the main database provider, but code generation can target other database engines (configurable).
  • It handles DeepData scenarios (data graphs N level deep) including DeepLoad (one DB query to fecth all the data in a single round trip)
  • It generates Unit of Work classes for Creator, Getter and Creator-getter patterns (this is most useful in asynchronous scenarios like WPF)

Usability

  • It tryes very hard to make your life easier on the usability side
    • hide, disable or filter whenever possible (if it's useless, don't show/allow it)
    • property grids sorted in a logical way (less browsing)
    • explains features and options using tooltips or footer helpers (property grids)
    • extensive use of drop down list to narrow your choices wherever you must select an object, but not any object (less mistakes)
    • auto sized popups that grow as large as it's needed to fit the property grid (less mouse clicks)
    • hierarchical property grids that are always unfolded/expanded (even less mouse clicks)
    • full set of gestures for object and collection creation from table schema (Cheat Sheet)

Comprehensive support for patterns and best practice

  • It generates best practice optimistic concurrency "first write wins"
  • It generates SimpleAuditing (created by, changed by, etc)
  • It generates SoftDelete (mark inactive and never see it again as if it was deleted from the database)
  • It allows caching of NameValueList and ReadOnly objects
  • It implememts cache on the server side DataPortal_Fetch so you only hit the database once
  • It supports object level RBAC and property level RBAC (Role Based Access Control)
  • It imports Authorization and Business Rules from DLL and generates the appropriate methods

Flexibility

  • It generates code with extensibility points
  • It allows for fine tunning of object properties so you don't have to do extensive editing on the generated code
  • It has enough configuration options to make your projects easy to generate, re-generate and maintain
  • It uses project defaults that you can edit to fit your usual needs and save for later re-use

Powerful code generation

  • It generates full documentation of classes and public methods (and smart documentation too!)
  • It generates "nice" code that uses only spaces (tabs off) and has correct indentation and line spacing
  • It has templates that try to be smart and report validation errors