SlideShare a Scribd company logo
Introduction to FluentData

Lars-Erik Kindblad
Senior Consultant
Blog: kindblad.com
Agenda

   What is FluentData?
   Why was FluentData created?
   Architecture
   Sample code
   Road map




                                      | Sector, Alliance, Offering
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
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
Alternatives to ORMs?

 ADO.NET
 •   Powerful
 •   Flexible
 •   Great performance
 •   ... but too much manual code




                                                  | Sector, Alliance, Offering
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
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
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
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
Architecture




               | Sector, Alliance, Offering
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
DbCommand

 Responsible for performing the actually query against the database




                                                          | Sector, Alliance, Offering
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
Builders

 Fluent API to generate SQL for insert, update and delete queries




                                                           | Sector, Alliance, Offering
Sample Code
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
Model
Database




 .NET




           | Sector, Alliance, Offering
Create and Initialize the DbContext




                                      | Sector, Alliance, Offering
INSERT DATA

              | Sector, Alliance, Offering
Insert a Category



       SQL




      Builder




                    | Sector, Alliance, Offering
UPDATE DATA

              | Sector, Alliance, Offering
Update a Product




                   | Sector, Alliance, Offering
DELETE DATA

              | Sector, Alliance, Offering
Delete a Product




                   | Sector, Alliance, Offering
SELECT DATA

              | Sector, Alliance, Offering
Select a Category




                    | Sector, Alliance, Offering
Select all Categories

 Map to List<Category>




 Map to CategoryCollection




                             | Sector, Alliance, Offering
Select all Products with the related Category

                Auto Mapping




                                                | Sector, Alliance, Offering
Select all Products with the related Category

             Manual Mapping




                                                | Sector, Alliance, Offering
Count the number of Products




                               | Sector, Alliance, Offering
Select All Categories + All Products




                                       | Sector, Alliance, Offering
Select Products 1,2,3,4




                          | Sector, Alliance, Offering
TRANSACTIONS

               | Sector, Alliance, Offering
Insert multiple products within a Transaction




                                                | Sector, Alliance, Offering
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
QUESTIONS?

             | Sector, Alliance, Offering
www.capgemini.com



The information contained in this presentation is proprietary. ©2010 Capgemini. All rights reserved

More Related Content

PPTX
Application Architecture by Lars-Erik Kindblad, Capgemini
PPTX
Inversion of Control - Introduction and Best Practice
PPTX
Dependency Injection vs Service Locator - Best Practice
PPTX
The Fluent Interface Pattern
PPTX
Data Access - Best Practice
PPTX
Application Architecture April 2014
PPTX
Deep Dive: MVC Controller Architecture
PPT
Mule anypoint exchange
Application Architecture by Lars-Erik Kindblad, Capgemini
Inversion of Control - Introduction and Best Practice
Dependency Injection vs Service Locator - Best Practice
The Fluent Interface Pattern
Data Access - Best Practice
Application Architecture April 2014
Deep Dive: MVC Controller Architecture
Mule anypoint exchange

What's hot (8)

PDF
Modernizing SCA through new Object Management Group (OMG) standards
PDF
Modernizing SCA through new Object Management Group (OMG) standards
PPT
Mule anypoint exchange
PDF
AXCIOMA, the component framework for distributed, real-time and embedded systems
PDF
Adaptive Network Middleware CSC (Communication Service Concierge) - R Kawamura
PDF
AXCIOMA, the internals, the component framework for distributed, real-time, a...
PDF
Evolving Communication Mechanisms of the OSGi Framework - Xuejun Chen, BMW Re...
PDF
OSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standards
Mule anypoint exchange
AXCIOMA, the component framework for distributed, real-time and embedded systems
Adaptive Network Middleware CSC (Communication Service Concierge) - R Kawamura
AXCIOMA, the internals, the component framework for distributed, real-time, a...
Evolving Communication Mechanisms of the OSGi Framework - Xuejun Chen, BMW Re...
OSGi Community Event 2010 - Experiences with OSGi in Industrial Applications
Ad

Viewers also liked (20)

PPTX
Angular JS deep dive
PPTX
Micro ORM vs Entity Framework
PDF
Responsive Design - Quick & Dirty
PDF
Webinar: Responsive Design
PPTX
Unit Tests are Overrated (NDCOslo 2013)
PDF
Ready or not: No UI vom Verschwinden des Graphical User Interfaces
PPTX
Avoid code duplication! Principles & Patterns
PDF
Systementwurf mit UML
PPTX
How to build more reliable, robust and scalable distributed systems
PDF
Anforderungsanalyse und UML Grundlagen
PDF
Domain Driven Design und Nosql
PDF
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
PPTX
The Single Responsibility Principle
PPTX
Publish & Subscribe to events using an Event Aggregator
PPTX
Roadmap von Microsoft UI Technologien und Windows 8
PDF
Domain-driven design - eine Einführung
PDF
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
PPTX
Message Oriented Architecture using NServiceBus
PDF
Beyond GUI - Die Zukunft digitaler Interfaces
PDF
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
Angular JS deep dive
Micro ORM vs Entity Framework
Responsive Design - Quick & Dirty
Webinar: Responsive Design
Unit Tests are Overrated (NDCOslo 2013)
Ready or not: No UI vom Verschwinden des Graphical User Interfaces
Avoid code duplication! Principles & Patterns
Systementwurf mit UML
How to build more reliable, robust and scalable distributed systems
Anforderungsanalyse und UML Grundlagen
Domain Driven Design und Nosql
Mobile Patterns - Wie Apps und Co. digitale Interfaces revolutionieren
The Single Responsibility Principle
Publish & Subscribe to events using an Event Aggregator
Roadmap von Microsoft UI Technologien und Windows 8
Domain-driven design - eine Einführung
SwissICT Fachgruppe UX: Definition und Bedeutung von User Experience
Message Oriented Architecture using NServiceBus
Beyond GUI - Die Zukunft digitaler Interfaces
Sci-Fi Interfaces - Innovationsmotor für Mensch-Maschine-Interfaces?
Ad

Similar to Introduction to FluentData - The Micro ORM (20)

PPTX
Latest trends in information technology
PDF
Self-Driving Data Center
PPTX
New Enterprise Cloud Database Options for 2019
 
PPTX
Layered Software Architecture
PDF
Single Source of Truth for Network Automation
PDF
Digital Reinvention by NRB
PDF
Evolving the Network Automation Journey from Python to Platforms
PPT
LIVO Presentation by ENO
PDF
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
PDF
Oracle Cloud Reference Architecture
PPTX
Proposte ORACLE per la modernizzazione del Datacenter e delle infrastrutture IT
PPTX
Break Free from Oracle
 
PDF
Updates to Apache CloudStack and LINBIT SDS
PDF
EDB & ELOS Technologies - Break Free from Oracle
 
PPTX
Euro IT Group
PDF
Optimize your CI/CD with GitLab and AWS
PPTX
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
PDF
Roadmap to the Clouds - How to Easily Migrate to the Cloud Platform Using WSO...
PPTX
Session
PDF
Newt global meetup microservices
Latest trends in information technology
Self-Driving Data Center
New Enterprise Cloud Database Options for 2019
 
Layered Software Architecture
Single Source of Truth for Network Automation
Digital Reinvention by NRB
Evolving the Network Automation Journey from Python to Platforms
LIVO Presentation by ENO
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
Oracle Cloud Reference Architecture
Proposte ORACLE per la modernizzazione del Datacenter e delle infrastrutture IT
Break Free from Oracle
 
Updates to Apache CloudStack and LINBIT SDS
EDB & ELOS Technologies - Break Free from Oracle
 
Euro IT Group
Optimize your CI/CD with GitLab and AWS
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
Roadmap to the Clouds - How to Easily Migrate to the Cloud Platform Using WSO...
Session
Newt global meetup microservices

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation theory and applications.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Machine Learning_overview_presentation.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
A Presentation on Artificial Intelligence
PDF
cuic standard and advanced reporting.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Cloud computing and distributed systems.
Per capita expenditure prediction using model stacking based on satellite ima...
Reach Out and Touch Someone: Haptics and Empathic Computing
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation theory and applications.pdf
NewMind AI Weekly Chronicles - August'25-Week II
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Machine Learning_overview_presentation.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
A Presentation on Artificial Intelligence
cuic standard and advanced reporting.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Big Data Technologies - Introduction.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Network Security Unit 5.pdf for BCA BBA.
Cloud computing and distributed systems.

Introduction to FluentData - The Micro ORM

  • 1. Introduction to FluentData Lars-Erik Kindblad Senior Consultant Blog: kindblad.com
  • 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
  • 10. Architecture | 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
  • 12. DbCommand  Responsible for performing the actually query against the database | 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
  • 17. Model Database .NET | Sector, Alliance, Offering
  • 18. Create and Initialize the DbContext | Sector, Alliance, Offering
  • 19. INSERT DATA | Sector, Alliance, Offering
  • 20. Insert a Category SQL Builder | Sector, Alliance, Offering
  • 21. UPDATE DATA | Sector, Alliance, Offering
  • 22. Update a Product | Sector, Alliance, Offering
  • 23. DELETE DATA | Sector, Alliance, Offering
  • 24. Delete a Product | Sector, Alliance, Offering
  • 25. SELECT DATA | Sector, Alliance, Offering
  • 26. Select a Category | Sector, Alliance, Offering
  • 27. Select all Categories Map to List<Category> Map to CategoryCollection | Sector, Alliance, Offering
  • 28. Select all Products with the related Category Auto Mapping | Sector, Alliance, Offering
  • 29. Select all Products with the related Category Manual Mapping | Sector, Alliance, Offering
  • 30. Count the number of Products | Sector, Alliance, Offering
  • 31. Select All Categories + All Products | Sector, Alliance, Offering
  • 32. Select Products 1,2,3,4 | Sector, Alliance, Offering
  • 33. TRANSACTIONS | Sector, Alliance, Offering
  • 34. Insert multiple products within a Transaction | 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
  • 36. QUESTIONS? | Sector, Alliance, Offering
  • 37. www.capgemini.com The information contained in this presentation is proprietary. ©2010 Capgemini. All rights reserved