2. Agenda
What is FluentData?
Why was FluentData created?
Architecture
Sample code
Road map
| Sector, Alliance, Offering
3. What is FluentData?
Micro ORM for .NET
Makes it simple to query a relational database
Open Source
MIT license
http://fluentdata.codeplex.com
NuGet: FluentData
| Sector, Alliance, Offering
4. Why was FluentData created?
ORMs such as Entity Framework and NHibernate have too many
disadvantages
• Framework is too complex
• Forces you to design the .NET Model in a special way by using attributes and
ORM Framework specific types
• Hard to define the mapping between the database model and business model
• A lot of mapping code/XML – not any less code than SQL and manual mapping
• Uses an abstracted query language instead of SQL
o Hard to do complex queries, Generates poor SQL, Slow
• Takes a long time to learn and master
• Drag and drop designers are buggy and limiting
• = Leads to unpredictable development time and performance
... had to be a better way to do it
| Sector, Alliance, Offering
5. Alternatives to ORMs?
ADO.NET
• Powerful
• Flexible
• Great performance
• ... but too much manual code
| Sector, Alliance, Offering
6. A Better Alternative?
ORM Micro ORM ADO.NET
Secure Fast
Auto mapping Simple
Flexible
Fast
Predictable
Flexible
Manual mapping
Predictable
Secure
Auto mapping
Manual mapping
| Sector, Alliance, Offering
7. Micro ORM
Uses SQL – the native and optimized query language for databases,
rock solid – in use since the 70s
Thin wrapper layer on top of ADO.NET:
• Reduce repetitive code
• Support auto mapping
Map per query instead of per Entity
= Result
• Fast
• Simple
• Efficient
| Sector, Alliance, Offering
8. Goals of FluentData
Easy to learn
Simple and efficient to use
Fast
Secure
Single DLL
Only the Data Access Layer should be affected by FluentData
Select queries should be SQL, insert, update and delete queries can
be SQL or generated
Support the major databases
| Sector, Alliance, Offering
9. Features
Fluent API
Supports SQL Server, SQL Server Compact, SQL Azure, Access,
MySQL, Oracle
Use SQL to select data and builders to insert, update, delete data
Supports
• Auto mapping and custom mapping
• Stored Procedures
• Transactions
• Multiple result sets
• Custom collections eg. ProductCollection instead of List<Product>
• Provider model
• ++
| Sector, Alliance, Offering
11. DbContext
Starting point for working with FluentData
Use it to define settings such as
• ConnectionString or ConnectionStringName
• UseTransaction
Hook up your own method to any of the supported events
• OnConnectionOpened
• OnConnectionOpening
• OnConnectionClosed
• OnExecuting
• OnExecuted
• OnError
| Sector, Alliance, Offering
13. Mapping
FluentData can automap query results to your own entity type or to a
dynamic type (new in .NET 4.0)
or you can map the query results manually
| Sector, Alliance, Offering
14. Builders
Fluent API to generate SQL for insert, update and delete queries
| Sector, Alliance, Offering
16. Getting started
Download FluentData.dll from either
• FluentData.CodePlex.com
• NuGet
Add a reference to FluentData.dll in your Data Access Project
| Sector, Alliance, Offering
35. Road map
Add support for more databases
• SQLite, PostgreSQL +
Add a Select Builder with Paging support and strongly typed auto
mapping
Simplify code
Single Source File
Performance improvements
.NET intellisense for the database model
| Sector, Alliance, Offering