You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(21) |
Dec
|
---|
From: Manuel E. <me...@mi...> - 2006-11-29 16:22:48
|
Sorry guys, I missed to commit the file yesterday. =20 About the IEnumerable return types, I think that an array could be initialized with contents of a IEnumerable but I was wrong. I changed = those functions to use arrays instead of IEnumerable. =20 These changes are in svn now. =20 _____ =20 De: Carlos Gerardo Hernandez Castrejon [mailto:he...@he...]=20 Enviado el: Martes, 28 de Noviembre de 2006 07:20 p.m. Para: ma...@gm... Asunto: Pedos del DataLayer =20 Que onda manox, oye fijate que no subiste el archivo ToManyAttribute.cs = y no podemos compilar. Otra cosa, el metodo=20 private IEnumerable LoadRows(IEnumerable drs)=20 regresa un IEnumerable, pero cuando es utilizado desde public object [] LoadObject (object [] primaryKeysValues,=20 ReloadType reload)=20 especificamente en esta linea return new object[] { LoadRows(new DataRow[1] { dt.Rows.Find(primaryKeysValues) = }) };=20 no se puede convertir IEnumerable a un array de objects, porque lo = hiciste as=ED? es necesario? o que pex Hay esperamos tu respuesta ma=F1ana, para seguirle..=20 =20 =20 |
From: <ce...@gm...> - 2006-11-24 22:42:01
|
By the time, Julio and me are working in the implementation of the exception handling in the DataServices project, any changes to the files Command, DataSource, DataSourceManager, MySqlDataSource, SqlDataSource, PgSqlDataSoruce should be committed in this list to us for making the manual merge. Also the new exception schema will stay as follow: exceptions handling will be policy based as in the Exception Handling Application Block of the Microsoft Enterprise Library. http://msdn.microsoft.com/library/?url=/library/en-us/dnpag2/html/EntLib2.asp (dll files have been committed to the DataServices/Assemblies directory). To add a policy is necessary modify the App.config file that will be added in the new project ExceptionHandling, in this file we specify the policy and the way in which the exception will be treated, it's also possible to specify a Handler inheriting from IExceptionHandler to handle the exception in any special manner. Greets. |
From: Manuel E. <me...@mi...> - 2006-11-24 17:13:50
|
DataServices and DataLayer changes are merged. They are compiling successfully but there are warnings about documentation comments that need to be completed. Currently, I'm working with BusinessLayerDataTier adapting it to use new low-level services specifically within DataObjectManager. If anybody is changing the same project, please post those changes to avoid conflicts and unnecessary work. |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 19:32:30
|
No, I don't see any conflict with these changes. **************************************************** - Connection instance and property removed. No connection instance is mantained by DataSource. - GetType function removed to enforce DataSource abstraction and avoid DataSource modification on future provider additions. - TODO: Remove ConnectionStringBuilder()static function. This functionality is implemented by BuildConnectionString() - BeginTransaction() uses new connections for new transactions. - CreateCommand functions removed. There is no need of Command object. That functionality is delegated to Query object on DataLayer to keep DataSources a low-level layer. Only IDbCommands are used by this layer. - FillSchema() function now receives a DbDataAdapter instead of a Command containing that DbDataAdapter. Locks implemented to avoid concurrent DataTable modification on mult-threaded environments. A new FillSchema() overload to accept a select IDbCommand from which a DbDataAdapter will be created. - Fill() overloaded and changed with similar behavior to FillSchema(). - Update() similar changes to Fill and FillSchema with additional overload to accept an array of DataRow's - New ComparisonOperators and LogicalOperators enumerations. - New ParseComparisonOperator and ParseLogicalOperator virtual functions to parse those enum values to sql equivalent operators. - New ParseRowFilterValue function to parse a parameter value into a valid string to be used as filter on a DataView - CreateCommandBuilder function removed. Command building process is delegated to each provider DataSource implementation. - Open and Close functions removed. No connection is maintained on DataSource - New ConstructParameter() and DeconstructParameter() to let each DataSource implementation create the string parameter to be used with an IDbCommand. (Different characters are used to parse parameters. SQL: '@', MySQL: '?', PGSql: ':') - New LiteralDate() and LiteralString() abstract functions to let each DataSource provider specify literals for strings and dates. - New ColumnInfo struct to store metadata information related to a field. - New abstract function GetTableColumns to retrieve metadata information related to a table. - New abstract function ParseType to map equivalent specific provider data types with standardized DbType enumeration. - Each DataSource implementation was updated with new changes. - Added one resources file for each DataSource to store commands to retrieve metadata information and keep clean code. **************************************************** Manuel you have to tell us if these changes in the DataLayer project are affected if we keep our code in DataServices and introduce only the changes I enclosed in asterisks above. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php <http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> &p=sourceforge&CID=DEVDEV _______________________________________________ Datalayer-Devel mailing list Dat...@li... https://lists.sourceforge.net/lists/listinfo/datalayer-devel <https://lists.sourceforge.net/lists/listinfo/datalayer-devel> |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 19:23:52
|
It is an important issue to keep backward compatibility in this stage of development, it's good to use generics and nullable types but i think right now it's much better to keep compatibility. That compatibility can be kept with conditional compiling. I don't see the point of jumping to 2.0 if we won't use the new features. I think all the configuration operations are better if they are handled by a separate component in this case the Configuration class. OK, I agree with that. We chose to keep the connection string as a simpe string in the DataSource in order to be able to introduce new data providers without the need of create new classes and modify the BuildConnectionString() and DeconstructConnectionString() in each one. I don't understand what you mean with new classes that need to be created. Check how those methods are implemented on my implementation. _____ De: dat...@li... [mailto:dat...@li...] En nombre de DataLayer Development List Enviado el: Jueves, 23 de Noviembre de 2006 12:36 p.m. Para: dat...@li... Asunto: Re: [Datalayer-devel] Changes in DataServices and DataLayer On 11/23/06, DataLayer Development List <dat...@li...> wrote: DataServices DataSourceManager : - data_sources modified to use a generic dictionary with string keys and DataSource values. It is an important issue to keep backward compatibility in this stage of development, it's good to use generics and nullable types but i think right now it's much better to keep compatibility. - LoadDataSources static function to read configuration file and instanciate each DataSource and add it to data_sources. I think all the configuration operations are better if they are handled by a separate component in this case the Configuration class. - New Static constructor calling LoadDataSources() DataSource: - New constructor to create a DataSource passing each connection parameter using separate variables. - New instance fields to store each connection parameter separately (username, password, host, port and database) - New abstract BuildConnectionString() to build a connection string based on connection parameters stored in DataSource instance fields (username, password, host, port and database) - New abstract DeconstructConnectionString() to extract connection parameters from connection_string instance field and save them on separate instance fields (username, password, host, port and database) - Call BuildConnectionString and DeconstructConnectionString on respective constructors. We chose to keep the connection string as a simpe string in the DataSource in order to be able to introduce new data providers without the need of create new classes and modify the BuildConnectionString() and DeconstructConnectionString() in each one. **************************************************** - Connection instance and property removed. No connection instance is mantained by DataSource. - GetType function removed to enforce DataSource abstraction and avoid DataSource modification on future provider additions. - TODO: Remove ConnectionStringBuilder()static function. This functionality is implemented by BuildConnectionString() - BeginTransaction() uses new connections for new transactions. - CreateCommand functions removed. There is no need of Command object. That functionality is delegated to Query object on DataLayer to keep DataSources a low-level layer. Only IDbCommands are used by this layer. - FillSchema() function now receives a DbDataAdapter instead of a Command containing that DbDataAdapter. Locks implemented to avoid concurrent DataTable modification on mult-threaded environments. A new FillSchema() overload to accept a select IDbCommand from which a DbDataAdapter will be created. - Fill() overloaded and changed with similar behavior to FillSchema(). - Update() similar changes to Fill and FillSchema with additional overload to accept an array of DataRow's - New ComparisonOperators and LogicalOperators enumerations. - New ParseComparisonOperator and ParseLogicalOperator virtual functions to parse those enum values to sql equivalent operators. - New ParseRowFilterValue function to parse a parameter value into a valid string to be used as filter on a DataView - CreateCommandBuilder function removed. Command building process is delegated to each provider DataSource implementation. - Open and Close functions removed. No connection is maintained on DataSource - New ConstructParameter() and DeconstructParameter() to let each DataSource implementation create the string parameter to be used with an IDbCommand. (Different characters are used to parse parameters. SQL: '@', MySQL: '?', PGSql: ':') - New LiteralDate() and LiteralString() abstract functions to let each DataSource provider specify literals for strings and dates. - New ColumnInfo struct to store metadata information related to a field. - New abstract function GetTableColumns to retrieve metadata information related to a table. - New abstract function ParseType to map equivalent specific provider data types with standardized DbType enumeration. - Each DataSource implementation was updated with new changes. - Added one resources file for each DataSource to store commands to retrieve metadata information and keep clean code. **************************************************** I think all these changes enclosed in asterisks above can be applied without change much of the code made by us. We can make a manual merge. DataLayer - New DataBaseManager class to create DataBase's based on DataSource's maintained by DataSourceManager from DataServices layer. Each DataBase is stored on a dictionary with the same string key of the DataSource and a DataBase value. - New Table and Query Objects wich uses DataSource's services. - New IQueryComponent - New TableJoin, TableJoinCollection, WhereStatement and WhereStatementCollection classes used by Query class. All classes implement IQueryComponent interface. DataBase: - New Constructor to receive a DataSource to be used by DataBase. - New data_source field and DataSource property to store and expose the DataBase's DataSource. - All static functions are now instance functions. - New table_pool generic dictionary to keep a collection of Table objects mapped to DataTables stored on instantiated DataSet. - DataSet is now maintained as an instance field. Property also changed to instance scope. - New DataSource instance field to bind DataBase with related DataSource. All DataBase's operations are done trough this field. - Fill now accepts only a Query object which is used to execute and fill DataTable stored on DataBase. - Update now only accepts a table name to be updated and uses Table and Query services. - New GetTable function to retrieve a Table stored on table_pool if it has been created previously or creates a new one, stores it on the pool and returns it. TableAttribute - New DataSource property to specify the key name of table's DataSource. - New constructor to specify table name and DataSource's key. - New data_source field to store table's DataSource key. If it's not specified, Table is mapped to first configured DataSource. Manuel you have to tell us if these changes in the DataLayer project are affected if we keep our code in DataServices and introduce only the changes I enclosed in asterisks above. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php <http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV> &p=sourceforge&CID=DEVDEV _______________________________________________ Datalayer-Devel mailing list Dat...@li... https://lists.sourceforge.net/lists/listinfo/datalayer-devel <https://lists.sourceforge.net/lists/listinfo/datalayer-devel> |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 19:14:06
|
Con esto no habr=EDa conflictos =20 _____ =20 De: dat...@li... [mailto:dat...@li...] En nombre de DataLayer Development List Enviado el: Jueves, 23 de Noviembre de 2006 12:47 p.m. Para: dat...@li... Asunto: Re: [Datalayer-devel] Urgent Information =20 Ok lo que hicimos con julio es lo siguiente: DataServices: Se implement=F3 el manejo de excepciones por medio de pol=EDticas com se = utiliza en el Exception Block de la Microsofto Enterprise Library, los cambios = se realizaron solamente a las clases de MySqlDataSource, PgDataSource, y SqlDataSource en el m=E9todo ProcessException, de igual forma de = modifico la firma abastracta de el mismo m=E9todo en la clase DataSource para = recibir solo la excepcion a manejar. Por cierto a=FAn no subo estos cambios, pero lo har=E9 en cuanto se = estabilice todo este asunto. On 11/23/06, DataLayer Development List < <mailto:dat...@li...> dat...@li...> wrote: > =20 >=20 > Hola a todos, por hoy vamos a escribir en espa=F1ol para que no se nos = vaya a > escapar nada de esta discusi=F3n. Hubo un "peque=F1o" problema de = falta de=20 > comunicaci=F3n entre Manuel y nosotros, creo que nunca mandamos un = correo a la > lista diciendo que era lo que est=E1bamos modificando y Manuel estaba > modificando lo mismo sin darnos cuenta, as=ED que cada grupo en esta = caso=20 > Manuel, Rodrigo-V=EDctor-Carlos y Julio-C=E9sar vamos a tener que = mandar un > reporte detallado de los cambios que hemos hecho en cada uno de los archivos > por proyecto y los nuevos archivos que hemos creado.=20 >=20 > Aqu=ED va el de Rodrigo-V=EDctor-Carlos:=20 >=20 > =B7 DataLayerUtilites=20 >=20 > o Configuration.cs: Se encarga de manipular el archivo XML de > configuraci=F3n para la DataLayer, el cual esta dividido en 2 partes,=20 > Providers y DataSources, esta clase se encarga de leer y desencriptar = el > archivo as=ED como tambi=E9n de encriptar y guardarlo. Tambi=E9n se = implemento un > mecanismo de validaci=F3n por medio de XSD para verificar que la = estructura=20 > del archivo sea la correcta.=20 >=20 > o Provider.cs: Es una abstracci=F3n para cada uno de los provedores = que se > encuentran en el archivo de configuraci=F3n, maneja 2 datos: Name y > FullyQualifiedName, este =FAltimo se utiliza para crear el = DbProviderFactory > correspondiente en .NET 2.0 o para hacer un switch y seleccionar el Provider > correspondiente en el caso de .NET 1.1.=20 >=20 > o DataSourceInfo.cs: Es la abstracci=F3n de los datos necesarios = para crear=20 > un DataSource, se manejan el nombre del DataSource, el nombre de = proveedor > (que debe existir en el archivo de configuraci=F3n) y el = ConnectionString, > este =FAltimo se maneja como una cadena puesto que como pretendemos = soportar > cualquier data provider instalado en el sistema no podemos conocer de > antemano el procedimiento para generar el connection string como > anteriormente se hacia.=20 >=20 > =B7 DataServices=20 >=20 > o DataSourceManager.cs: Se elimino el manejo directo del archivo = XML de > configuraci=F3n y se sustituyo por una instancia de la clase = Configuration. > Tambi=E9n se modifico el procedimiento para crear los DataSources para = que=20 > soportora la creaci=F3n de un GenericDataSource que representa un = wrapper para > el DbProviderFactory de .NET 2.0.=20 >=20 > o DataSource.cs: Se modifico el constructor para que en vez de = requerir > usuario, password, host y base de datos, solamente requiriera el connection > string directamente.=20 >=20 > =B7 DataLayerConfigurationUI=20 >=20 > o Este proyecto es la interfaz de usuario para adminstrar el = archivo de > configuraci=F3n del DataLayer, nos permite modificar providers y datasources, > as=ED como ver los providers instalados en la maquina y agregarlos a = nuestra > configuraci=F3n. Espero que con eso sea suficiente para entender los = cambios > que realizamos, cualquier duda mandarla a la lista para contestarla. Y > esperamos que sea facil unir los cambios realizados por Manuel y por > nosotros. >=20 > Saludos!=20 > =20 > = -------------------------------------------------------------------------= =20 > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to = share your > opinions on IT & business topics through brief surveys - and earn cash = > http://www.techsay.com/default.php?page=3Djoin.php <http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV> &p=3Dsourceforge&CID=3DDEVDEV >=20 > _______________________________________________=20 > Datalayer-Devel mailing list > Dat...@li... > https://lists.sourceforge.net/lists/listinfo/datalayer-devel >=20 >=20 >=20 |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 19:13:08
|
=20 =20 _____ =20 De: dat...@li... [mailto:dat...@li...] En nombre de DataLayer Development List Enviado el: Jueves, 23 de Noviembre de 2006 12:16 p.m. Para: dat...@li... Asunto: [Datalayer-devel] Urgent Information =20 Hola a todos, por hoy vamos a escribir en espa=F1ol para que no se nos = vaya a escapar nada de esta discusi=F3n. Hubo un "peque=F1o" problema de falta = de comunicaci=F3n entre Manuel y nosotros, creo que nunca mandamos un = correo a la lista diciendo que era lo que est=E1bamos modificando y Manuel estaba modificando lo mismo sin darnos cuenta, as=ED que cada grupo en esta = caso Manuel, Rodrigo-V=EDctor-Carlos y Julio-C=E9sar vamos a tener que mandar = un reporte detallado de los cambios que hemos hecho en cada uno de los = archivos por proyecto y los nuevos archivos que hemos creado.=20 Aqu=ED va el de Rodrigo-V=EDctor-Carlos: * DataLayerUtilites o Configuration.cs: Se encarga de manipular el archivo XML de configuraci=F3n para la DataLayer, el cual esta dividido en 2 partes, Providers y DataSources, esta clase se encarga de leer y desencriptar el archivo as=ED como tambi=E9n de encriptar y guardarlo. Tambi=E9n se = implemento un mecanismo de validaci=F3n por medio de XSD para verificar que la = estructura del archivo sea la correcta. o Provider.cs: Es una abstracci=F3n para cada uno de los provedores = que se encuentran en el archivo de configuraci=F3n, maneja 2 datos: Name y FullyQualifiedName, este =FAltimo se utiliza para crear el = DbProviderFactory correspondiente en .NET 2.0 o para hacer un switch y seleccionar el = Provider correspondiente en el caso de .NET 1.1. =20 Lo del DbProviderFactory a=FAn no est=E1 implementado por el Npgsql. = Creo que ser=EDa mejor esperar a que est=E9 implementado. En el connector de = Mysql parece que ya est=E1 implementado. =20 =20 * DataSourceInfo.cs: Es la abstracci=F3n de los datos necesarios = para crear un DataSource, se manejan el nombre del DataSource, el nombre de proveedor (que debe existir en el archivo de configuraci=F3n) y el ConnectionString, este =FAltimo se maneja como una cadena puesto que = como pretendemos soportar cualquier data provider instalado en el sistema no podemos conocer de antemano el procedimiento para generar el connection string como anteriormente se hacia. =20 Sobre los connectionstrings tambi=E9n pienso que as=ED es como deben almacenarse, pero a=FAn sigue siendo necesario mantener al menos en la implementaci=F3n espec=EDfica de cada DataSource el nombre de la base de = datos, esto porque hay comandos para la informaci=F3n de esquema que necesitan = el nombre de la base de datos.=20 Con el nuevo patr=F3n de f=E1brica de proveedores existe un DbConnectionStringBuilder que lo que hace es lo mismo que los m=E9todos BuildConnectionString y DeconstructConnectionString, delegar la = construcci=F3n del connectionString o extracci=F3n de par=E1metros a cada proveedor (el problema es el Npgsql). Si ya nada m=E1s se va a especificar el = connection string al datasource, entonces s=F3lo ser=EDa necesario el DeconstructConnectionString. Lo que se puede hacer es que =E9stos = m=E9todos se implementen directamente en el datasource espec=EDfico y quitar los = m=E9todos abstractos y las variables del gen=E9rico DataSource. As=ED cada = implementaci=F3n DataSource ser=EDa el encargado de manejar sus par=E1metros para la = conexi=F3n y s=F3lo ser=EDan visibles dentro del mismo. =20 * DataServices o DataSourceManager.cs: Se elimino el manejo directo del archivo XML = de configuraci=F3n y se sustituyo por una instancia de la clase = Configuration. Tambi=E9n se modifico el procedimiento para crear los DataSources para = que soportora la creaci=F3n de un GenericDataSource que representa un = wrapper para el DbProviderFactory de .NET 2.0. Habr=EDa que adaptar a que el DataSourceManager cargue todos los = datasources configurados en el constructor para en base a esos se inicialicen. _________________________________________________________________________= ___ _ =20 * DataSource.cs: Se modifico el constructor para que en vez de requerir usuario, password, host y base de datos, solamente requiriera = el connection string directamente. OK =20 =20 =20 * DataLayerConfigurationUI o Este proyecto es la interfaz de usuario para adminstrar el archivo = de configuraci=F3n del DataLayer, nos permite modificar providers y = datasources, as=ED como ver los providers instalados en la maquina y agregarlos a = nuestra configuraci=F3n. Espero que con eso sea suficiente para entender los cambios que = realizamos, cualquier duda mandarla a la lista para contestarla. Y esperamos que sea facil unir los cambios realizados por Manuel y por nosotros. Saludos!=20 |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 18:47:11
|
Ok lo que hicimos con julio es lo siguiente: DataServices: Se implement=F3 el manejo de excepciones por medio de pol=EDticas com se ut= iliza en el Exception Block de la Microsofto Enterprise Library, los cambios se realizaron solamente a las clases de MySqlDataSource, PgDataSource, y SqlDataSource en el m=E9todo ProcessException, de igual forma de modifico l= a firma abastracta de el mismo m=E9todo en la clase DataSource para recibir s= olo la excepcion a manejar. Por cierto a=FAn no subo estos cambios, pero lo har=E9 en cuanto se estabil= ice todo este asunto. On 11/23/06, DataLayer Development List < dat...@li...> wrote: > > > Hola a todos, por hoy vamos a escribir en espa=F1ol para que no se nos va= ya a > escapar nada de esta discusi=F3n. Hubo un "peque=F1o" problema de falta d= e > comunicaci=F3n entre Manuel y nosotros, creo que nunca mandamos un correo= a la > lista diciendo que era lo que est=E1bamos modificando y Manuel estaba > modificando lo mismo sin darnos cuenta, as=ED que cada grupo en esta caso > Manuel, Rodrigo-V=EDctor-Carlos y Julio-C=E9sar vamos a tener que mandar = un > reporte detallado de los cambios que hemos hecho en cada uno de los archivos > por proyecto y los nuevos archivos que hemos creado. > > Aqu=ED va el de Rodrigo-V=EDctor-Carlos: > > =B7 DataLayerUtilites > > o Configuration.cs: Se encarga de manipular el archivo XML de > configuraci=F3n para la DataLayer, el cual esta dividido en 2 partes, > Providers y DataSources, esta clase se encarga de leer y desencriptar el > archivo as=ED como tambi=E9n de encriptar y guardarlo. Tambi=E9n se imple= mento un > mecanismo de validaci=F3n por medio de XSD para verificar que la estructu= ra > del archivo sea la correcta. > > o Provider.cs: Es una abstracci=F3n para cada uno de los provedores qu= e se > encuentran en el archivo de configuraci=F3n, maneja 2 datos: Name y > FullyQualifiedName, este =FAltimo se utiliza para crear el DbProviderFact= ory > correspondiente en .NET 2.0 o para hacer un switch y seleccionar el Provider > correspondiente en el caso de .NET 1.1. > > o DataSourceInfo.cs: Es la abstracci=F3n de los datos necesarios para crear > un DataSource, se manejan el nombre del DataSource, el nombre de proveedo= r > (que debe existir en el archivo de configuraci=F3n) y el ConnectionString= , > este =FAltimo se maneja como una cadena puesto que como pretendemos sopor= tar > cualquier data provider instalado en el sistema no podemos conocer de > antemano el procedimiento para generar el connection string como > anteriormente se hacia. > > =B7 DataServices > > o DataSourceManager.cs: Se elimino el manejo directo del archivo XML d= e > configuraci=F3n y se sustituyo por una instancia de la clase Configuratio= n. > Tambi=E9n se modifico el procedimiento para crear los DataSources para qu= e > soportora la creaci=F3n de un GenericDataSource que representa un wrapper para > el DbProviderFactory de .NET 2.0. > > o DataSource.cs: Se modifico el constructor para que en vez de requeri= r > usuario, password, host y base de datos, solamente requiriera el connection > string directamente. > > =B7 DataLayerConfigurationUI > > o Este proyecto es la interfaz de usuario para adminstrar el archivo d= e > configuraci=F3n del DataLayer, nos permite modificar providers y datasources, > as=ED como ver los providers instalados en la maquina y agregarlos a nues= tra > configuraci=F3n. Espero que con eso sea suficiente para entender los camb= ios > que realizamos, cualquier duda mandarla a la lista para contestarla. Y > esperamos que sea facil unir los cambios realizados por Manuel y por > nosotros. > > Saludos! > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > > _______________________________________________ > Datalayer-Devel mailing list > Dat...@li... > https://lists.sourceforge.net/lists/listinfo/datalayer-devel > > > |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 18:35:50
|
On 11/23/06, DataLayer Development List < dat...@li...> wrote: > > *DataServices*** > > > > DataSourceManager: > > > > - data_sources modified to use a generic dictionary with string keys and > DataSource values. > It is an important issue to keep backward compatibility in this stage of development, it's good to use generics and nullable types but i think right now it's much better to keep compatibility. > - LoadDataSources static function to read configuration file and > instanciate each DataSource and add it to data_sources. > I think all the configuration operations are better if they are handled by a separate component in this case the Configuration class. > - New Static constructor calling LoadDataSources() > DataSource: > > - New constructor to create a DataSource passing each connection > parameter using separate variables. > > - New instance fields to store each connection parameter > separately (username, password, host, port and database) > > - New abstract BuildConnectionString() to build a connection > string based on connection parameters stored in DataSource instance fields > (username, password, host, port and database) > > - New abstract DeconstructConnectionString() to extract connection > parameters from connection_string instance field and save them on separate > instance fields (username, password, host, port and database) > > - Call BuildConnectionString and DeconstructConnectionString on > respective constructors. > We chose to keep the connection string as a simpe string in the DataSource in order to be able to introduce new data providers without the need of create new classes and modify the BuildConnectionString() and DeconstructConnectionString() in each one. **************************************************** > - Connection instance and property removed. No connection > instance is mantained by DataSource. > > - GetType function removed to enforce DataSource abstraction and > avoid DataSource modification on future provider additions. > > - TODO: Remove ConnectionStringBuilder()static function. This > functionality is implemented by BuildConnectionString() > > - BeginTransaction() uses new connections for new transactions. > > - CreateCommand functions removed. There is no need of Command > object. That functionality is delegated to Query object on DataLayer to > keep DataSources a low-level layer. Only IDbCommands are used by this > layer. > > - FillSchema() function now receives a DbDataAdapter instead of a > Command containing that DbDataAdapter. Locks implemented to avoid > concurrent DataTable modification on mult-threaded environments. A new > FillSchema() overload to accept a select IDbCommand from which a > DbDataAdapter will be created. > > - Fill() overloaded and changed with similar behavior to > FillSchema(). > > - Update() similar changes to Fill and FillSchema with additional > overload to accept an array of DataRow's > > - New ComparisonOperators and LogicalOperators enumerations. > > - New ParseComparisonOperator and ParseLogicalOperator virtual > functions to parse those enum values to sql equivalent operators. > > - New ParseRowFilterValue function to parse a parameter value into > a valid string to be used as filter on a DataView > > - CreateCommandBuilder function removed. Command building process > is delegated to each provider DataSource implementation. > > - Open and Close functions removed. No connection is maintained on > DataSource > > - New ConstructParameter() and DeconstructParameter() to let each > DataSource implementation create the string parameter to be used with an > IDbCommand. (Different characters are used to parse parameters. SQL: '@', > MySQL: '?', PGSql: ':') > > - New LiteralDate() and LiteralString() abstract functions to let > each DataSource provider specify literals for strings and dates. > > - New ColumnInfo struct to store metadata information related to a > field. > > - New abstract function GetTableColumns to retrieve metadata > information related to a table. > > - New abstract function ParseType to map equivalent specific > provider data types with standardized DbType enumeration. > > - Each DataSource implementation was updated with new changes. > > - Added one resources file for each DataSource to store commands > to retrieve metadata information and keep clean code. > **************************************************** I think all these changes enclosed in asterisks above can be applied without change much of the code made by us. We can make a manual merge. *DataLayer*** > > > > - New DataBaseManager class to create DataBase's based on > DataSource's maintained by DataSourceManager from DataServices layer. Each > DataBase is stored on a dictionary with the same string key of the > DataSource and a DataBase value. > > - New Table and Query Objects wich uses DataSource's services. > > - New IQueryComponent > > - New TableJoin, TableJoinCollection, WhereStatement and > WhereStatementCollection classes used by Query class. All classes > implement IQueryComponent interface. > > > > DataBase: > > - New Constructor to receive a DataSource to be used by DataBase. > > - New data_source field and DataSource property to store and > expose the DataBase's DataSource. > > - All static functions are now instance functions. > > - New table_pool generic dictionary to keep a collection of Table > objects mapped to DataTables stored on instantiated DataSet. > > - DataSet is now maintained as an instance field. Property also > changed to instance scope. > > - New DataSource instance field to bind DataBase with related > DataSource. All DataBase's operations are done trough this field. > > - Fill now accepts only a Query object which is used to execute > and fill DataTable stored on DataBase. > > - Update now only accepts a table name to be updated and uses > Table and Query services. > > - New GetTable function to retrieve a Table stored on table_poolif it has been created previously or creates a new one, stores it on the > pool and returns it. > > > > TableAttribute > > - New DataSource property to specify the key name of table's > DataSource. > > - New constructor to specify table name and DataSource's key. > > - New data_source field to store table's DataSource key. If it's > not specified, Table is mapped to first configured DataSource. > Manuel you have to tell us if these changes in the DataLayer project are affected if we keep our code in DataServices and introduce only the changes I enclosed in asterisks above. ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > > _______________________________________________ > Datalayer-Devel mailing list > Dat...@li... > https://lists.sourceforge.net/lists/listinfo/datalayer-devel > > > |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 18:21:06
|
DataServices DataSourceManager: - data_sources modified to use a generic dictionary with string keys and DataSource values. - LoadDataSources static function to read configuration file and instanciate each DataSource and add it to data_sources. - New Static constructor calling LoadDataSources() DataSource: - New constructor to create a DataSource passing each connection parameter using separate variables. - New instance fields to store each connection parameter separately (username, password, host, port and database) - New abstract BuildConnectionString() to build a connection string based on connection parameters stored in DataSource instance fields (username, password, host, port and database) - New abstract DeconstructConnectionString() to extract connection parameters from connection_string instance field and save them on separate instance fields (username, password, host, port and database) - Call BuildConnectionString and DeconstructConnectionString on respective constructors. - Connection instance and property removed. No connection instance is mantained by DataSource. - GetType function removed to enforce DataSource abstraction and avoid DataSource modification on future provider additions. - TODO: Remove ConnectionStringBuilder()static function. This functionality is implemented by BuildConnectionString() - BeginTransaction() uses new connections for new transactions. - CreateCommand functions removed. There is no need of Command object. That functionality is delegated to Query object on DataLayer to keep DataSources a low-level layer. Only IDbCommands are used by this layer. - FillSchema() function now receives a DbDataAdapter instead of a Command containing that DbDataAdapter. Locks implemented to avoid concurrent DataTable modification on mult-threaded environments. A new FillSchema() overload to accept a select IDbCommand from which a DbDataAdapter will be created. - Fill() overloaded and changed with similar behavior to FillSchema(). - Update() similar changes to Fill and FillSchema with additional overload to accept an array of DataRow's - New ComparisonOperators and LogicalOperators enumerations. - New ParseComparisonOperator and ParseLogicalOperator virtual functions to parse those enum values to sql equivalent operators. - New ParseRowFilterValue function to parse a parameter value into a valid string to be used as filter on a DataView - CreateCommandBuilder function removed. Command building process is delegated to each provider DataSource implementation. - Open and Close functions removed. No connection is maintained on DataSource - New ConstructParameter() and DeconstructParameter() to let each DataSource implementation create the string parameter to be used with an IDbCommand. (Different characters are used to parse parameters. SQL: '@', MySQL: '?', PGSql: ':') - New LiteralDate() and LiteralString() abstract functions to let each DataSource provider specify literals for strings and dates. - New ColumnInfo struct to store metadata information related to a field. - New abstract function GetTableColumns to retrieve metadata information related to a table. - New abstract function ParseType to map equivalent specific provider data types with standardized DbType enumeration. - Each DataSource implementation was updated with new changes. - Added one resources file for each DataSource to store commands to retrieve metadata information and keep clean code. DataLayer - New DataBaseManager class to create DataBase's based on DataSource's maintained by DataSourceManager from DataServices layer. Each DataBase is stored on a dictionary with the same string key of the DataSource and a DataBase value. - New Table and Query Objects wich uses DataSource's services. - New IQueryComponent - New TableJoin, TableJoinCollection, WhereStatement and WhereStatementCollection classes used by Query class. All classes implement IQueryComponent interface. DataBase: - New Constructor to receive a DataSource to be used by DataBase. - New data_source field and DataSource property to store and expose the DataBase's DataSource. - All static functions are now instance functions. - New table_pool generic dictionary to keep a collection of Table objects mapped to DataTables stored on instantiated DataSet. - DataSet is now maintained as an instance field. Property also changed to instance scope. - New DataSource instance field to bind DataBase with related DataSource. All DataBase's operations are done trough this field. - Fill now accepts only a Query object which is used to execute and fill DataTable stored on DataBase. - Update now only accepts a table name to be updated and uses Table and Query services. - New GetTable function to retrieve a Table stored on table_pool if it has been created previously or creates a new one, stores it on the pool and returns it. TableAttribute - New DataSource property to specify the key name of table's DataSource. - New constructor to specify table name and DataSource's key. - New data_source field to store table's DataSource key. If it's not specified, Table is mapped to first configured DataSource. |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 18:15:58
|
Hola a todos, por hoy vamos a escribir en espa=F1ol para que no se nos vaya= a escapar nada de esta discusi=F3n. Hubo un "peque=F1o" problema de falta de comunicaci=F3n entre Manuel y nosotros, creo que nunca mandamos un correo a= la lista diciendo que era lo que est=E1bamos modificando y Manuel estaba modificando lo mismo sin darnos cuenta, as=ED que cada grupo en esta caso Manuel, Rodrigo-V=EDctor-Carlos y Julio-C=E9sar vamos a tener que mandar un reporte detallado de los cambios que hemos hecho en cada uno de los archivo= s por proyecto y los nuevos archivos que hemos creado. Aqu=ED va el de Rodrigo-V=EDctor-Carlos: =B7 DataLayerUtilites o *Configuration.cs*: Se encarga de manipular el archivo XML de configuraci=F3n para la DataLayer, el cual esta dividido en 2 partes, Providers y DataSources, esta clase se encarga de leer y desencriptar el archivo as=ED como tambi=E9n de encriptar y guardarlo. Tambi=E9n se impleme= nto un mecanismo de validaci=F3n por medio de XSD para verificar que la estructura del archivo sea la correcta. o *Provider.cs*: Es una abstracci=F3n para cada uno de los provedores qu= e se encuentran en el archivo de configuraci=F3n, maneja 2 datos: Name y FullyQualifiedName, este =FAltimo se utiliza para crear el DbProviderFactor= y correspondiente en .NET 2.0 o para hacer un switch y seleccionar el Provide= r correspondiente en el caso de .NET 1.1. o *DataSourceInfo.cs*: Es la abstracci=F3n de los datos necesarios para crear un DataSource, se manejan el nombre del DataSource, el nombre de proveedor (que debe existir en el archivo de configuraci=F3n) y el ConnectionString, este =FAltimo se maneja como una cadena puesto que como pretendemos soportar cualquier data provider instalado en el sistema no podemos conocer de antemano el procedimiento para generar el connection string como anteriormente se hacia. =B7 DataServices o *DataSourceManager.cs*: Se elimino el manejo directo del archivo XML d= e configuraci=F3n y se sustituyo por una instancia de la clase Configuration. Tambi=E9n se modifico el procedimiento para crear los DataSources para que soportora la creaci=F3n de un GenericDataSource que representa un wrapper p= ara el DbProviderFactory de .NET 2.0. o *DataSource.cs*: Se modifico el constructor para que en vez de requeri= r usuario, password, host y base de datos, solamente requiriera el connection string directamente. =B7 DataLayerConfigurationUI o Este proyecto es la interfaz de usuario para adminstrar el archivo de configuraci=F3n del DataLayer, nos permite modificar providers y datasource= s, as=ED como ver los providers instalados en la maquina y agregarlos a nuestr= a configuraci=F3n. Espero que con eso sea suficiente para entender los cambios que realizamos, cualquier duda mandarla a la lista para contestarla. Y esperamos que sea facil unir los cambios realizados por Manuel y por nosotros. Saludos! |
From: DataLayer D. L. <dat...@li...> - 2006-11-23 17:19:42
|
Hola a todos, por hoy vamos a escribir en espa=F1ol para que no se nos vaya= a escapar nada de esta discusi=F3n. Hubo un "peque=F1o" problema de falta de comunicaci=F3n entre Manuel y nosotros, creo que nunca mandamos un correo a= la lista diciendo que era lo que est=E1bamos modificando y Manuel estaba modificando lo mismo sin darnos cuenta, as=ED que cada grupo en esta caso Manuel, Rodrigo-V=EDctor-Carlos y Julio-C=E9sar vamos a tener que mandar un reporte detallado de los cambios que hemos hecho en cada uno de los archivo= s por proyecto y los nuevos archivos que hemos creado. Aqu=ED va el de Rodrigo-V=EDctor-Carlos: =B7 DataLayerUtilites o *Configuration.cs*: Se encarga de manipular el archivo XML de configuraci=F3n para la DataLayer, el cual esta dividido en 2 partes, Providers y DataSources, esta clase se encarga de leer y desencriptar el archivo as=ED como tambi=E9n de encriptar y guardarlo. Tambi=E9n se impleme= nto un mecanismo de validaci=F3n por medio de XSD para verificar que la estructura del archivo sea la correcta. o *Provider.cs*: Es una abstracci=F3n para cada uno de los provedores que= se encuentran en el archivo de configuraci=F3n, maneja 2 datos: Name y FullyQualifiedName, este =FAltimo se utiliza para crear el DbProviderFactor= y correspondiente en .NET 2.0 o para hacer un switch y seleccionar el Provide= r correspondiente en el caso de .NET 1.1. o *DataSourceInfo.cs*: Es la abstracci=F3n de los datos necesarios para crear un DataSource, se manejan el nombre del DataSource, el nombre de proveedor (que debe existir en el archivo de configuraci=F3n) y el ConnectionString, este =FAltimo se maneja como una cadena puesto que como pretendemos soportar cualquier data provider instalado en el sistema no podemos conocer de antemano el procedimiento para generar el connection string como anteriormente se hacia. =B7 DataServices o *DataSourceManager.cs*: Se elimino el manejo directo del archivo XML de configuraci=F3n y se sustituyo por una instancia de la clase Configuration. Tambi=E9n se modifico el procedimiento para crear los DataSources para que soportora la creaci=F3n de un GenericDataSource que representa un wrapper p= ara el DbProviderFactory de .NET 2.0. o *DataSource.cs*: Se modifico el constructor para que en vez de requerir usuario, password, host y base de datos, solamente requiriera el connection string directamente. =B7 DataLayerConfigurationUI o Este proyecto es la interfaz de usuario para adminstrar el archivo de configuraci=F3n del DataLayer, nos permite modificar providers y datasource= s, as=ED como ver los providers instalados en la maquina y agregarlos a nuestr= a configuraci=F3n. Espero que con eso sea suficiente para entender los cambios que realizamos, cualquier duda mandarla a la lista para contestarla. Y esperamos que sea facil unir los cambios realizados por Manuel y por nosotros. Saludos! |
From: DataLayer D. L. <dat...@li...> - 2006-11-17 23:12:02
|
The Table object uses schema information provided by specific DBMS provider to get column information and creates general Query objects with this meta-data information. The information schema commands need to know the database name of current connection. These commands are being implemented on each data source provider which doesn't maintain fields for each parameter of the connection string. To solve this, I propose to keep parameters on different fields and delegate the connection string building process to the data source specific provider, instead of having it on the DataSourceManager. Each DataBase with his associated DataSource will be configured at run-time by the new DataBaseManager object which will read configuration file and assign each connection parameter to respective fields in the DataSource. DataSource will be responsible for creating IDbConnection objects. Have a nice weekend!! |
From: Manuel E. <me...@mi...> - 2006-11-16 22:53:07
|
I agree with you Charly, let=92s write in English but if anybody = doesn=92t feel comfortable with that I think it=92s better to read some mails in = Spanish and one of us translate them than loosing that comment/question/advice = because of language issues. =20 Respect to the upgrade, I would like to add that it=92s important to = support the previous version especially for mono which has not a complete = support for .NET 2.0 yet. To do this, we can take these approaches: =20 - Use conditional compiling on the main trunk to maintain both versions within the same files. The advantage of this approach is that = new features will be implemented on both versions. Disadvantage: code can = get complicated and difficult to read. - Move the previous version to a new branch and only add fixes. Continue with new features on main trunk. Advantage: clean code. Disadvantage: previous version will be outdated. =20 Any comments or suggestions are welcome. By the way, who=92s Ts=E1ndu? =20 =20 _____ =20 De: dat...@li... [mailto:dat...@li...] En nombre de = Carlos Gerardo Hernandez Castrejon Enviado el: Jueves, 16 de Noviembre de 2006 01:50 p.m. Para: dat...@li... Asunto: [Datalayer-devel] DataLayer goes .NET 2.0 =20 Hey guys, are going to write in English or Spanish? (Personally I think English is better as to keep the record of this mailing list in English = for easy reading for other people around the world) However, I just = converted all the projects in the DataLayer SVN to the Visual Studio 2005 project format. Because of that from now on we will be using Visual Studio 2005 = for the developing of our project, this is according to what is better for = both Manuel and Ts=E1ndu.It didn't make sense to keep developing in Visual = Studio 2003 (.NET 1.1) when the .NET 3.0 is already out there.=20 Comments are welcome about this decision. Cheers!=20 |
From: Manuel E. <me...@mi...> - 2006-11-16 22:46:09
|
I made this use case to define the behavior of the new Table and Query objects and multiple DataBase support. DataBase handle data storage facilities for a configured DataSource. DataBaseManager maintains multiple DataBases at class level scope (static). DataBase encapsulates a DataSource per instance, so DataSourceManager gets replaced by DataBaseManager. Also I made a diagram on how data is moved across layers. Cheers, |
From: Carlos G. H. C. <he...@he...> - 2006-11-16 19:49:52
|
Hey guys, are going to write in English or Spanish? (Personally I think English is better as to keep the record of this mailing list in English for easy reading for other people around the world) However, I just converted all the projects in the DataLayer SVN to the Visual Studio 2005 project format. Because of that from now on we will be using Visual Studio 2005 for the developing of our project, this is according to what is better for both Manuel and Ts=E1ndu.It didn't make sense to keep developing in Visual Studi= o 2003 (.NET 1.1) when the .NET 3.0 is already out there. Comments are welcome about this decision. Cheers! |
From: <ce...@gm...> - 2006-11-16 19:18:33
|
Ya me suscrib=ED a la lista. El DataSource es asignado a nivel de interfaces, osea mediante DataSourceManager.CreateDataSource, esto es muy complicado puesto que en caso de ser necesario se debe cambiar el DataSource manualmente antes de que se ejecuten las consultas o comandos necesarios. Se tiene la idea de ligar los entes de negocio a alguno de los DataSource disponibles en el archivo de configuracion mediante un atributo de clase, actualmente no hay nada de esto. On 11/16/06, Manuel Espinosa <me...@mi...> wrote: > > > > > > > Preguntas: =BFqu=E9 componente o qui=E9n es el responsable de asignar la = propiedad > DataSource del DataObjectManager? =BFqui=E9n crea ese DataSource? > > > > C=E9sar: faltas en la lista. > > > > Saludos, > > |
From: Carlos G. H. C. <he...@he...> - 2006-11-16 18:35:20
|
On 11/16/06, Manuel Espinosa <me...@mi...> wrote: > > > > Preguntas: =BFqu=E9 componente o qui=E9n es el responsable de asignar la > propiedad DataSource del DataObjectManager? =BFqui=E9n crea ese DataSourc= e? > Hasta pena me da decirlo, pero es que eso quedo muy mal implementado, el DataSource se asigna desde la aplicaci=F3n final, se crea usando el DataSourceManager y se asigna al DataObjectManager, es una de las cosas que no estan bien estructuradas a=FAn. Con el cambio para soportar multiples DataSources al mismo tiempo vamos a tener que cambiar eso y ya quedara correjido. C=E9sar: faltas en la lista. > > > > Saludos, > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV > > _______________________________________________ > Datalayer-Devel mailing list > Dat...@li... > https://lists.sourceforge.net/lists/listinfo/datalayer-devel > > > |
From: Manuel E. <me...@mi...> - 2006-11-16 17:52:47
|
=20 Preguntas: =BFqu=E9 componente o qui=E9n es el responsable de asignar la = propiedad DataSource del DataObjectManager? =BFqui=E9n crea ese DataSource? =20 C=E9sar: faltas en la lista. =20 Saludos, =20 |