16 juillet 2007
1
16
/07
/juillet
/2007
01:43
Code Fluent - Initiation
Code Fluent est une solution développée par des experts .NET (Soft Fluent)
une série d’articles pourraient être postés car je vais étudier plus en profondeur les possibilités offertes
J’utilise ici mon classique exemple gestion de contacts très simple pour bien comprendre
1 – définition des fichiers Xml
2 tables/classes : Contact et ContactCategory
CFContacts .xml
<cf:project xmlns:cf="http://www.softfluent.com/codefluent/2005/1" xmlns:cfpc="http://www.softfluent.com/codefluent/producers.cache/2005/1" defaultNamespace="CFContacts" persistencePropertyNameFormat="{1}" defaultKeyPropertyTypeName="int"> <!-- inclut le fichier CFContactsProducerAll.xml --> <cf:import path="CFContactsProducerAll.xml" /> <!-- definition de 2 entités --> <Contact> <Id/> <ContactName/> <ContactFirstName/> <ContactAge typeName="int"/> <ContactBirth typeName="datetime"/> <ContactCategory typeName="ContactCategory"/> </Contact> <ContactCategory> <Id/> <ContactCategoryLabel/> </ContactCategory> </cf:project> |
CFContactsProducerAll.xml
seront générés :
- la base de données SQL ServerCFContacts avec tables,relations,procédures stockées,...
- les classes du projet Visual Studio
seront générés :
- la base de données SQL ServerCFContacts avec tables,relations,procédures stockées,...
- les classes du projet Visual Studio
<cf:project xmlns:cf="http://www.softfluent.com/codefluent/2005/1" defaultNamespace="CFContacts"> <cf:producer typeName="CodeFluent.Producers.SqlServer.SqlServerProducer, CodeFluent.Producers.SqlServer"> <cf:configuration targetDirectory="c:/Target/Persistence" connectionString="server=.;database=CFContacts;Integrated Security=true"> </cf:configuration> </cf:producer> <cf:producer typeName="CodeFluent.Producers.CodeDom.CodeDomProducer, CodeFluent.Producers.CodeDom"> <cf:configuration targetDirectory="c:/Target/Model" outputName="CFContacts.Model.dll"> </cf:configuration> </cf:producer> </cf:project> |
2 – Génération
Lancer CodeFluent command prompt .. Puis ..
CodeFluent.Build <chemin vers fichier.xml>
Dans mon cas
CodeFluent.Build « C:/Documents and Settings/romagny/Mes documents/Visual Studio 2005/Projects/CFContacts/CFContacts.xml »
3- projet
Ajouter soit la dll générée du projet soit les classes
+ Ajouter une référence à la dll CodeFluent.Runtime.dll (présent dans le répertoire d’installation de CodeFluent)
Premier constat : nous avons des classe collections et des classes unitaires
Celles ci s'occupent (en une seule et même classe) à la fois
>> de l'accès à la base de données via des méthodes static (les classes collections retournant des collections,les classes unitaires des instances)
>> du filtre et du trie des objets métiers
Celles ci s'occupent (en une seule et même classe) à la fois
>> de l'accès à la base de données via des méthodes static (les classes collections retournant des collections,les classes unitaires des instances)
>> du filtre et du trie des objets métiers
De plus Code Fluent dispose de son propre language de requetage le CFQL
exemple :
public CFContacts.Contact GetItem(int id) { if ((id == -1)) { throw new System.ArgumentNullException("id"); } CFContacts.Contact i = ((CFContacts.Contact)(this.BaseTable[id])); return i; } public static System.Data.IDataReader PageDataLoadAll(CodeFluent.Runtime.PageOptions pageOptions) { CodeFluent.Runtime.CodeFluentPersistence persistence = CodeFluentContext.Get(CFContacts.Constants.CFContactsStoreName).Persistence; persistence.CreateStoredProcedureCommand("Contact_LoadAll"); if ((pageOptions != null)) { System.Collections.IEnumerator enumerator = pageOptions.OrderByArguments.GetEnumerator(); bool b; int index = 0; for (b = enumerator.MoveNext(); b; b = enumerator.MoveNext()) { CodeFluent.Runtime.OrderByArgument argument = ((CodeFluent.Runtime.OrderByArgument)(enumerator.Current)); persistence.AddParameter(string.Format("@_orderBy{0}", index), argument.Name); persistence.AddParameter(string.Format("@_orderByDirection{0}", index), ((int)(argument.Direction))); index = (index + 1); } } System.Data.IDataReader reader = CodeFluentContext.Get(CFContacts.Constants.CFContactsStoreName).Persistence.ExecuteReader(); return reader; } |
Published by Romagny13
-
dans
O-RM (Enterprise Library-CodeFluent-NHibernate)
commenter cet article …
commenter cet article …