<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Solo Quiero Info &#187; SubSonic</title>
	<atom:link href="http://soloquiero.info/tag/subsonic/feed/" rel="self" type="application/rss+xml" />
	<link>http://soloquiero.info</link>
	<description>La información: tu recurso más importante</description>
	<lastBuildDate>Thu, 02 Jun 2011 19:17:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mostrando datos fácilmente con SubSonic</title>
		<link>http://soloquiero.info/2009/03/mostrando-datos-facilmente-con-subsonic/</link>
		<comments>http://soloquiero.info/2009/03/mostrando-datos-facilmente-con-subsonic/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 06:23:24 +0000</pubDate>
		<dc:creator>Administrador</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SubSonic]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://soloquiero.info/?p=70</guid>
		<description><![CDATA[Una de las ventajas de usar SubSonic es el poder mostrar datos de una manera fácil con él. Si necesitamos mostrar varios registros de una tabla, solo basta con agregar a nuestro toolbox de controles a subsonic.dll y utilizaremos el control &#8220;QuickTable&#8221; Este es la forma más básica de usar este control, y nos mostrará [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las ventajas de usar SubSonic es el poder mostrar datos de una manera fácil con él.</p>
<p>Si necesitamos mostrar varios registros de una tabla, solo basta con agregar a nuestro toolbox de controles a subsonic.dll y utilizaremos el control &#8220;QuickTable&#8221;</p>
<p><code lang="csharp"><subsonic:QuickTable ID="QuickTable1" runat="server" ColumnList="Campo1,Campo2" TableName="Tabla" /></code></p>
<p>Este es la forma más básica de usar este control, y nos mostrará los datos de nuestra tabla:</p>
<div id="attachment_74" class="wp-caption alignnone" style="width: 182px"><img src="http://soloquiero.info/wp-content/uploads/2009/03/quicktable1.png" alt="Demo QuickTable sencilla" title="Demo QuickTable sencilla" width="172" height="274" class="size-full wp-image-74" /><p class="wp-caption-text">Demo QuickTable sencilla</p></div>
<p>La tabla nos permite ordenar por el campo que querramos, sin que tengamos que agregar nada. En el caso que los encabezados de nuestros campos necesiten personalizar, podremos cambiarlos de la siguiente manera  <strong>Campo:Título</strong></p>
<p><code lang="csharp"><subsonic:QuickTable ID="QuickTable1" runat="server" ColumnList="Campo1:Título,Campo2;Nuevo Título" TableName="Tabla" /></code><br />
<img src="http://soloquiero.info/wp-content/uploads/2009/03/quicktable2.png" alt="Títulos personalizados en QuickTable" title="Títulos personalizados en QuickTable" width="172" height="274" class="size-full wp-image-75" /></p>
<p>Si son demasiados datos podríamos paginarlos también agregando el atributo  PageSize=&#8221;##&#8221; donde ## es el número de registros que queremos mostrar a la vez:</p>
<p><code lang="csharp"><subsonic:QuickTable ID="QuickTable2" runat="server" ColumnList="Nombre:Título,Apellidos:Nuevo Título" TableName="Socios"  PageSize="12"/></code><br />
<img src="http://soloquiero.info/wp-content/uploads/2009/03/quicktable3.png" alt="Paginando con QuickTable y Subsonic" title="Paginando con QuickTable y Subsonic" width="325" height="310" class="alignnone size-full wp-image-82" /></p>
<p>Podríamos agregar un link a algún campo para editar un registro, pero entonces se necesita agregar el campo llave a la lista de campos que se seleccionan con &#8220;ColumnList&#8221;</p>
<p><code lang="csharp"><subsonic:QuickTable ID="QuickTable2" runat="server" ColumnList="ID_PK:Llave,Nombre:Título,Apellidos:Nuevo Título" TableName="Socios"  PageSize="12" LinkToPage="Pagina.aspx" LinkOnColumn="Nombre" /></code><br />
<img src="http://soloquiero.info/wp-content/uploads/2009/03/quicktable4.png" alt="Link en QuickTable" title="Link en QuickTable" width="325" height="310" class="alignnone size-full wp-image-85" /></p>
<p>Y eso es todo, en el siguiente post trataré de mostrar como usar un combo para seleccionar un registro de una tabla sin lidiar con el databind y demás.</p>
]]></content:encoded>
			<wfw:commentRss>http://soloquiero.info/2009/03/mostrando-datos-facilmente-con-subsonic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subsonic y C# (1)</title>
		<link>http://soloquiero.info/2009/02/subsonic-y-c-1/</link>
		<comments>http://soloquiero.info/2009/02/subsonic-y-c-1/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 05:06:56 +0000</pubDate>
		<dc:creator>Administrador</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[SubSonic]]></category>

		<guid isPermaLink="false">http://soloquiero.info/?p=7</guid>
		<description><![CDATA[Bueno, este es el primer post de ejemplo para iniciar con SubSonic. SubSonic es un componente o utilería que nos permite abstraernos del código necesario para conectarnos a una base de datos (Sql Server, Oracle, MySql, Etc) y también del código necesario para grabar/eliminar/actualizar un registro (hacer un ABM con SubSonic es facilísimo). Aunque no [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, este es el primer post de ejemplo para iniciar con <a title="Página principal del proyecto Subsonic" href="http://subsonicproject.com/" target="_blank">SubSonic</a>.</p>
<p>SubSonic es un componente o utilería que nos permite abstraernos del código necesario para conectarnos a una base de datos <strong>(Sql Server</strong>, <strong>Oracle</strong>, <strong>MySql</strong>, Etc) y también del código necesario para grabar/eliminar/actualizar un registro (hacer un ABM con SubSonic es facilísimo). Aunque no es tan potente como <strong>nHibernate</strong>, nos ayuda mucho en el desarrollo de nuestras aplicaciones/sitios web que necesitan conectar a una base de datos.</p>
<p>Primero necesitaremos <a title="Descargar SubSonic" href="http://www.codeplex.com/subsonic/Release/ProjectReleases.aspx?ReleaseId=14067" target="_blank">bajar SubSonic</a>, Una vez que lo tengamos instalado, podemos utilizar <strong>SubStage</strong> para generar la configuración para nuestra aplicación.</p>
<div id="attachment_9" class="wp-caption alignnone" style="width: 509px"><a href="http://soloquiero.info/wp-content/uploads/2009/02/substage_main.jpg"><img class="size-full wp-image-9" title="Pantalla principal de SubStage" src="http://soloquiero.info/wp-content/uploads/2009/02/substage_main.jpg" alt="Pantalla principal de SubStage" width="499" height="341" /></a><p class="wp-caption-text">Pantalla principal de SubStage</p></div>
<div>
<ul>
<li><strong>Crear Nuevo Proyecto <a href="http://soloquiero.info/wp-content/uploads/2009/02/nuevoproyecto.png"><img class="alignnone size-medium wp-image-19" title="nuevoproyecto" src="http://soloquiero.info/wp-content/uploads/2009/02/nuevoproyecto.png" alt="" width="16" height="16" /></a></strong></li>
</ul>
</div>
<ol>
<li>Lo primero será dar clic en el primer botón para crear un nuevo proyecto (clic en la imagen para agrandar).</li>
<li>cambiaremos el nombre por el de nuestro proyecto en <strong>Project Name.<br />
</strong></li>
</ol>
<div>
<ul>
<li><strong>Crear Nueva cadena de conexión <a href="http://soloquiero.info/wp-content/uploads/2009/02/nuevacadenaconexion.png"><img class="alignnone size-medium wp-image-20" title="nuevacadenaconexion" src="http://soloquiero.info/wp-content/uploads/2009/02/nuevacadenaconexion.png" alt="" width="16" height="16" /></a></strong></li>
</ul>
</div>
<ol>
<li>Clic en el tercer botón para agregar una nueva cadena de conexión.</li>
<li>En la propiedad <strong>ConnectionString</strong> debemos escribir la cadena de conexión a nuestra base de datos.Para efectos de prueba puede utilizar la cadena de conexión siguiente, si tiene Sql Server y las bases de datos de prueba instaladas.<br />
<blockquote><p>Data Source=(local); Database=Northwind; Integrated Security=true;</p></blockquote>
</li>
<li>En la propiedad <strong>Name </strong>debemos escribir un nombre descriptivo para esta conexión, o bien el nombre de la base de datos que usará, sobre todo si tendremos más de una conexión en la configuración de nuestro sitio web/aplicación .net.</li>
</ol>
<div>
<ul>
<li><strong>Crear el Proveedor <a href="http://soloquiero.info/wp-content/uploads/2009/02/nuevoproveedor.png"><img class="alignnone size-medium wp-image-21" title="nuevoproveedor" src="http://soloquiero.info/wp-content/uploads/2009/02/nuevoproveedor.png" alt="" width="16" height="16" /></a></strong></li>
</ul>
</div>
<ol>
<li>Seleccionamos el nombre de nuestro proyecto en la lista a la izquierda y damos Clic en el segundo botón para crear un nuevo <strong>Provider.<br />
</strong></li>
<li>Lo primero a hacer es modificar la propiedad <strong>Name</strong> nuevamente por un nombre descriptivo, o algo como &#8220;MiProyectoProviderPrincipal&#8221;, de tal manera que si necesitamos de más de un proveedor, pues podamos distinguirlos fácilmente.</li>
<li>Estableceremos la propiedad <strong>ConnectionStringI</strong>D al nombre de la conexión que creamos en el segundo punto.</li>
<li><strong>GeneratedNameSpace</strong> es de suma importancia seleccionar con cuidado el nombre del NameSpace bajo el que queremos que Subsonic nos genere el código para nuestras clases.Yo Acostumbro a Usar <em>NombreDelCliente.Data.DS</em> para poder reutilizar en distintos proyectos del mismo cliente mis librerías de acceso a datos, además puedo agregar más clases al NameSpace Data relacionadas con la base de datos, y finalmente DS que significa Data Source, únicamente las librerias de acceso a datos, por si necesito generar una librería con únicamente estos.</li>
<li>Estableceremos la propiedad <strong>ProviderTypeID</strong> al tipo de motor de bases de datos que vayamos a utilizar, entre las opciones disponemos de
<ul>
<li>Sql Server</li>
<li>MySql (ISAM)</li>
<li>MySql (InnoDB)</li>
<li>Oracle</li>
<li>Enterprise Library</li>
<li>SqlLite</li>
<li>SqlCE</li>
</ul>
<p>Existe también un <a title="Proveedor de datos Access para SubSonic" href="http://www.codeplex.com/subsonic/WorkItem/View.aspx?WorkItemId=13913">Proveedor de datos para Access</a>.</li>
<li>Con las opciones por default podríamos trabajar bien, pero algunas propiedades que les pueden interesar son:
<ol>
<li><strong>excludeTableList</strong> Permite indicar por medio de una mascara, lista o ambas las tablas que no queremos generar clases, ej: <em>Lista*, p*, procesos,reportes,generados</em>.</li>
<li><strong>generateRelatedTablesAsProperties</strong> Interesante opción que hace que podamos acceder desde una instancia de alguna clase a los registros hijos de otra tabla por medio de una propiedad.</li>
<li><strong>removeUnderscores</strong> Nos quita los <strong>&#8220;_&#8221;</strong> de los nombres de nuestras tablas al generar las clases, T_Ejemplo se generaría como TEjemplo.</li>
</ol>
</li>
<li>Una vez completado esto, tenemos que modificar la propiedad <strong>CodeGenerationPath</strong> en <strong>SubStage Configuration</strong> a la ruta donde queremos que nos genere el código.Luego, Utilizaremos el botón <img class="alignnone size-medium wp-image-22" title="generarcodigo" src="http://soloquiero.info/wp-content/uploads/2009/02/generarcodigo.png" alt="" width="16" height="16" /> para generar el código.SubStage nos generará un archivo .cs por cada tabla/procedimiento almacenado en nuestra base de datos.En el apartado de <strong>EventLog</strong> de SubStage, podremos ver los posibles errores y sucesos al generar el código. Luego deberemos copiar de <strong>Configuration OutPut </strong>la configuracion a nuestro web.config o App.config.
<p>El Apartado <strong>Event Log</strong> nos mostrará el resultado de generar nuestras clases, <strong>Configuration Output</strong> la configuración utilizada y  <strong>Generated Files</strong> contiene nuestros archivos generados,</li>
</ol>
<p><a href="http://soloquiero.info/wp-content/uploads/2009/02/opciones_subsonic.png" target="_blank"><img class="size-full wp-image-28" title="opciones_subsonic" src="http://soloquiero.info/wp-content/uploads/2009/02/opciones_subsonic.png" alt="Opciones de Generación de SubStage" /></a></p>
<p>Una vez agregado a su proyecto la configuración de SubSonic, y agregada la referencia a SubSonic.dll en su proyecto (Esto se verá más a fondo en la segunda parte de este artículo),  un ejemplo de código es este: (Yo utilice la cadena de conexión a la base de datos de ejemplo &#8220;<strong>Northwind</strong>&#8220;, usted debe actualizar el nombre del NameSpace seleccionado y el nombre de sus tablas.</p>
<p><code lang="csharp">using SoloQuiero.Data.DS;</p>
<p>namespace SubSonic1 {<br />
public partial class Form1 : Form {<br />
public Form1() {<br />
InitializeComponent();<br />
}<br />
private void button1_Click(object sender, EventArgs e) {<br />
CategoryCollection lista = new CategoryController()<br />
.FetchAll();</p>
<p>string resultado = "";<br />
foreach (Category categoria in lista) {<br />
resultado += "\r\n" +categoria.CategoryName;<br />
}<br />
listado.Text = "Existen "+resultado+" Categorías" ;<br />
listado.Text += resultado;<br />
}</p>
<p>private void button2_Click(object sender, EventArgs e) {<br />
int pk = 3;<br />
Category categoria = new Category(pk);<br />
listado.Text = "Tabla: " + categoria.TableName;<br />
listado.Text += "\r\nCategoryName" + categoria.CategoryName;<br />
listado.Text += "\r\nPrimary Key" + categoria.CategoryID;<br />
listado.Text += "\r\nPrimary Key" + categoria.Description;<br />
}<br />
}<br />
}</code></p>
<h3>Notas Finales</h3>
<p>SubSonic es gratuito y nos permite abstraernos del acceso a datos, evitándonos el tener que conectar a la base de datos, crear los parámetros para cada consulta, etc. Para ello, SubSonic nos provee de métodos para realizar ciertas acciones, por ejemplo:</p>
<p><code lang="csharp"> Category miCategoria = new Categoria(3);</code></p>
<p>Nos crea una clase del tipo Category (una clase derivada de nuestra tabla) y se conecta a la base de datos, ejecuta un query (Where CategoryID=3) y establece las propiedades de la clase a los valores de los campos para ese registro.</p>
<p>Agregar un nuevo registro es tan fácil como esto:<br />
<code lang="csharp"> Category miCategoria = new Categoria();<br />
miCategoria.CategoryName= "Mi Nueva Categoría";<br />
miCategoria.Description="Esta Categoría no debería usarse nunca";<br />
miCategoria.Save();<br />
</code></p>
<p>Borrar un registro:<br />
<code lang="csharp"> Category.Delete(3);</code></p>
<p>Si su aplicación es WinForm, deben agregar también las siguientes referencias a su proyecto<br />
System.Web<br />
System.Configuration</p>
<p>Bajar <a href="http://soloquiero.info/wp-content/uploads/2009/02/subsonic1.zip">Proyecto Demo</a></p>
<p>Hasta la próxima entrega de SubSonic</p>
]]></content:encoded>
			<wfw:commentRss>http://soloquiero.info/2009/02/subsonic-y-c-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

