VWG EntityBridge Framework

VWGEntityBridge.Logo.jpg

EntityBridge Framework combines the awesome power of LLBLGen Pro and Visual WebGui.

Goals
My goal for the EntityBridge Framework has been to automate much of the tedious tasks I have encountered over the past 1.5+ years using VWG and LLBLGen Pro together. So, you are literally getting my heart & soul - yes blood, sweat, & tears - over the past 1.5+ years to build rich internet applications. Most of my time on this framework has been on the bridge between the Presentation Layer and the Business Objects layer. As such, this framework was focused much more on the business data, and much less on a pretty presentation. So you will find your data very easy to work with... but this is not intended to be a controls library. View Dependency Diagram

Community Involvement
My framework is certainly not perfect - but it's a great start. By releasing my software library out here - I will be opening myself up to criticism. But you know what? In the end - by having the Community work together on this framework - we can make it much better! And in the end, that's what counts - Making VWG Applications faster & better than ever before for the Community. LLBLGen Pro gives us the enormous workhouse power to do so. So please dig in, and let's improve this EntityBridge Framework!

Examples / Screencasts
I hope to have some up soon for you! Keep reminding me for screencasts! (A good example project will use Northwind w/ embedded Access DB)

Current Functionality
  • Editable Area. Supports Transactions, Units of Work, n-Level Undo, n-Level Calculated Fields, n-Level DeleteTrackers, n-Level Child Editable Areas. Every EditableArea may be used independently as its own screen and/or may be used in collaboration with other EditableAreas across multiple screens as part of a larger business process.
  • Selectable Area. Passes Entities back & forth to an EditableArea for editing.
  • Automatic Prompting for Cancel/Delete
  • Automatic Updating of Calculated Fields
  • Cancel/Undo Restore Points
  • DeleteTracker - Automatic Management of In-Memory Deleted Entities n-Levels Deep - without actually deleting from DB until EditableArea.Save is called. Understands all dependencies & finds proper Commit order. DeleteTrackers are working across Cancelled Entity Graphs (this is difficult because RemovedEntitiesTrackers are not serialized with RestorePoint)
  • ISortable & SortableManager - Move Entities Up/Down using SortOrder field
  • Easy Databinding to all Calculated Fields
  • DataBind - Easy Databinding for all Common VWG Controls to EntityFields, even Calculated Fields (Textboxes, Labels, Checkboxes, Grids, Listboxes, Comboxes, Radio buttons, etc.)
  • DataPopulate - Easy Populating of all Common VWG Controls to EntityCollections & EntityViews (Grids, Listboxes, Comboxes, etc.)
  • Many-to-Many Selection Manager - Automatically manages creating/deleting records for your many-to-many relationships. (Supports Grids & CheckedListboxes)
  • WorkspaceTab Manager
  • TreeManager - Parent-Child Hierarchies
  • TreeManager - Set Hierarchies (LeftID/RightID)
  • Optimistic Concurrency
  • IDefaultValues & Entity Default Values - Supports defaults for each Entity, as well as managing all default Child Entities
  • Supports Self-Servicing Entity Model
  • Cascade Deletes - Deletes all Child Entities. Supports Instant Delete, UnitOfWork, & In-Memory Deletes. Supports Undo/Cancel.
  • Automatic ErrorProviders & Validations
  • IDataBoundTextboxFormatter: Formatters for TextBoxes, Labels, & DataGridViews. Supports Format, Parse, & TextboxValidation methods. Currency, Percentage, etc. are working very well.
  • RecursiveClone (As New) - Creates an in-memory Copy of a Root Entity & all its Child Related Entities. RequirePrefetch flag can be set so that only in-memory Child Entities are cloned, or allow LazyLoading of Child Entities from database. All Child Entities point to original Parent instances, not clones. Very useful for Copy / "Save As" functionality with complex relationships.
  • FindEntityInCollection - Finds an Entity or it's ClonedEntity within an EntityCollection or EntityView. Supports CloneMatchLevels: Same Instance, Same Object ID, Same PrimaryKey, or AnyMatch
  • ParentObserver - Notifies you when a foreign keys changes. Very useful for DataBinding Grids/Listboxes to a Foreign Key. Supports both updating by Primary Key ID and by Object.
  • ChildrenObserver - Observer that monitors all of your Children & Siblings Recursively n-levels Deep. Fires events for you to detect actions on your Children.
  • CalculatedFieldsUpdater - Automatically Updates Calculated Fields from n-levels Deep. Recursive to all Children Entities, even if Child Entities are not prefetched & lazy-loaded @ run-time.
  • EntityFilterManager - Creates PredicateExpressions to Filter Entities from an EntityView or EntityCollection; Supports WhiteList/BlackList filtering, as well as matching Entity Clones.
  • ExportEntityManager - Exports your Entities, EntityCollections, & EntityViews to Typed DataTables & DataSets. Supports DataRelations 100%. Useful in several ways. 1.) This also allows you to quickly build a dependency diagram of your Entities; Very useful for finding Commit Order. 2.) This allows business-layer Calculated fields to be used in Reports! Generates .XSD Schemas useful for CrystalReports & ReportViewer. Also supports simple joins of Multiple DataTables (EntityTypes) into a single Flat-DataTable, without going to the Database. Very useful for reporting.
  • SubreportManager - Automatically feeds ReportViewer subreports the proper ReportDataSources needed. Allows Parent Reports & Subreports to automatically share the same DataSet.

Misc
  • File Download Gateway - Easily send files to the browser. Supports file naming, MIME types, IO Streams or FilePath
  • PDF Merge - for Merging Multiple PDFs into Single PDF. Useful for creating Report Packages (ie, joining several CrystalReports / ReportViewer reports into one downloadable PDF).
  • One-Click VWG Desktop Applications (using Cassini Embedded Webserver)


In-The-Works
  • Merging Entity Graphs during Cancel. Useful for both EditableArea & SelectableArea
  • Nullable ComboBox. Add None/Nullable option to list? Entity that represents a Null value.
  • File & Image Assets Manager w/ File Upload Control
  • ASP.NET-Compliant Role & Action-based Security. Includes Entity-level, Row-level, & Field-level Security.

Desired Functionality
  • Automatic generation of CRUD Screens
  • Database Migrations
  • Historical Tables
  • Support Adapter Entity Model
  • Business Logic Entity Managers (used with Adapter Entity Model)
  • Support Composite Primary Keys
  • Better Exception Handling - Global
  • OpenID Authentication
  • Web Services/WCF Layer

Why LLBLGen Pro?
LLBLGen Pro is arguably the absolute best ORM Framework for Microsoft .NET. Enterprise-grade. Like Guy Peled, Frans Bouma - the Lead Developer for LLBLGen Pro - is an absolute genius. LLBLGen Pro Designer Screenshots Full Feature Set

Licensing & Future Possibilities
This EntityBridge Framework is currently licensed under LGPL - which means, you can use it in commercial & non-commercial projects - Free! I hope you find this Framework helpful!

If this Framework does take off within the Community & you do find it quite helpful - at some point, it might be in my best interest to charge a small fee for it to be used in commercial projects. Have no fear, my friends. Here is my written guarantee - if that ever does happen - I will never ask you to pay for anything until we have a solid framework here - and any fee would only apply to new commercial projects. So everything prior would be grandfathered - free forever! So - Use it Freely in all your projects!

Hope this helps!

Ryan

Last edited Jun 26, 2009 at 5:28 AM by rdhatch, version 110

Comments

No comments yet.