ORMapper: NHibernate Henning Eiben
Die meisten Anwendungen drehen sich um Daten Klassischer Datenbankzugriff – ConnectionString – SQL oder Stored Procedures – ADO.Net DataSet, Command-Objekte, … ORMapper: NHibernate2
ORM Anwendungen drehen sich Geschäftsobjekte nicht um Tabellen ORM – Konvertieren von Tabellen zu Objekten – Weniger Code – Abstraktion ORMapper: NHibernate3
Funktionsweise Datenbank – MS-SQL, SQLLite, Oracle, MySQL, … Konfiguration – XML, FluentNHibernate (API) Geschäftsobjekte – Poco ORMapper: NHibernate4
ORMapper: NHibernate5 Demo
Vorteile Einheitliches Paradigma für Datenzugriffe Keine wiederkehrenden Arbeiten Skalierbarkeit, Integrität, Abstraktion ORMapper: NHibernate6
XML-Konfirugation 1/2 NHibernate.Driver.SqlClientDriver Server=(local);initial catalog=NorthWind;Integrated Security=SSPI 10 true NHibernate.Dialect.MsSql2008Dialect true 60 true 1, false 0, yes 'Y', no 'N' NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle ORMapper: NHibernate7
XML-Konfiguration 2/2 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate3" namespace="NHibernate3.Entities" default-lazy="true" default-access="property"> ORMapper: NHibernate8
var configuration = new Configuration(); configuration.Configure(); configuration.AddAssembly(typeof (Customer).Assembly); _sessionFactory = configuration.BuildSessionFactory(); using (var session = _sessionFactory.OpenSession()) using (var tx = session.BeginTransaction()) { var customers = from mycustopmer in session.Query () where mycustopmer.Id == "ALFKI" select mycustopmer; customerList.DataSource = customers; customerList.DataBind(); tx.Commit(); } ORMapper: NHibernate9
Fluent Konfiguration 1/2 var fluentConfiguration = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.Database("Northwind").Server("localhost").TrustedConnection() ).ShowSql() ).Mappings(m => m.FluentMappings.AddFromAssemblyOf ()); ORMapper: NHibernate10
Fluent Konfiguration 2/2 public class CustomerMapping : ClassMap { /// /// Initializes a new instance of the class. /// /// Initializes a new OR-Mapping. public CustomerMapping() { Table("Customers"); Id(customer => customer.Id).Column("CustomerID").GeneratedBy.Assigned(); Map(c=>c.Name).Column("CompanyName"); } ORMapper: NHibernate11
Features Abfragen – HQL – Criteria API – LINQ Transaktionen … ORMapper: NHibernate12
ORMapper: NHibernate13 Demo
Queqies: LINQ var customers = from mycustomer in session.Query () where mycustomer.Id == "ALFKI" select mycustomer; ORMapper: NHibernate14
Queries: HQL var customers = session.CreateQuery("from Customer where Id='ALFKI'").List (); ORMapper: NHibernate15
Queries: Criteria API var customers = session.CreateCriteria ().Add(Expression.Eq("Id", "ALFKI")).List (); ORMapper: NHibernate16
Verweise ORMapper: NHibernate17
Danke Henning Eiben /MSN: ICQ: # ORMapper: NHibernate18