facilitando la vida del desarrollador con visual studio 2005 daniel a. seara
TRANSCRIPT
![Page 1: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/1.jpg)
Facilitando la vida del desarrollador con Visual Studio
2005
Daniel A. Seara
www.sqlu.com
![Page 2: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/2.jpg)
Migrando desde SQL Server© 2000
• A partir de una base previa– Es posible obtener un respaldo de una base
de SQL 2000 en SQL 2005– Y también se puede adjuntar una base de la
versión anterior
• Es recomendable, pero no imprescindible, actualizar la versión de la base.
![Page 3: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/3.jpg)
USE [master]
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'PhoneServices', @new_cmptlevel=90
GO
![Page 4: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/4.jpg)
Así era en 2000
![Page 5: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/5.jpg)
Schemas
• Permiten agrupar información relacionada
• De esa manera, se mantiene mejor orden
• … y se puede administrar mejor la seguridad
![Page 6: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/6.jpg)
Creando Esquemas
USE [PhoneServices]GOCREATE SCHEMA [Geography]GOCREATE SCHEMA [Sales]GOCREATE SCHEMA [Operations]GO
![Page 7: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/7.jpg)
Moviendo objetos a los esquemas
ALTER SCHEMA [Sales] TRANSFER dbo.CustomerGOALTER SCHEMA [Sales] TRANSFER dbo.PayTypeGOALTER SCHEMA [Sales] TRANSFER dbo.PayTypeByClientGO
![Page 8: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/8.jpg)
Y así queda
![Page 9: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/9.jpg)
Cosas del Sitio Web
• Presentación– Páginas maestras– Hoja de estilos– “Skin”
![Page 10: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/10.jpg)
Páginas maestras
• Acomodar las cosas dentro de tablas
• No, repito NO cambiar estilos en tiempo de diseño– Usar una hoja de estilos
• Veremos luego, esto ayuda con los temas
![Page 11: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/11.jpg)
Hoja de estilos
• Nunca, o sea NUNCA usar tamaños fijos– El usuario puede necesitar cambiar el tamaño
de las fuentes
• Definir una clase para cada forma distinta de mostrar las cosas– Es fácil así reasignar la forma de
presentación
![Page 12: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/12.jpg)
“Skin”
• Define estándar de presentación de cualquier control– Facilita mantener normalizado el sitio– Es posible asignar nombres (SkinID) para
definir distintas formas para el mismo control
<asp:TextBox runat="Server" CssClass="NormalTextBox" /><asp:TextBox runat="Server" CssClass="NumericTextBox" SkinID="Numbers" />
.NormalTextBox{
background-color: goldenrod;}.NumericTextBox{
background-color: goldenrod;text-align: right;
}
![Page 13: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/13.jpg)
Llevando los datos a las páginas
• SqlDataSource– Es fácil
• ¿Es fácil?
– Súper RAD• ¿En serio es tan rápido?
– Se arma solito
![Page 14: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/14.jpg)
Usando mis objetos de negocio
• Encapsulan la funcionalidad
• Permiten mayor control en lo que hay que hacer, cómo, cuándo y dónde
• Implican mayor trabajo “de base”.
![Page 15: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/15.jpg)
Componentes base
• Como siempre un servicio de datos
![Page 16: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/16.jpg)
Reglas “Base”
Tranquilos. Veremos algunos detalles luego
![Page 17: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/17.jpg)
Creando las reglas de “este” negocio
• Agregar una clase
• Heredar de baseEntity
• Implementar los métodos obligatorios– AssignTableName
• Retorna el nombre de la tabla a manipular
– Application
Dim mApp As Application Protected Overrides Property Application() As _ Desarrolladoras.Reglas.baseApplication Get If mApp Is Nothing Then mApp = New Application End If Return mApp End Get Set(ByVal value As _ Desarrolladoras.Reglas.baseApplication) mApp = value End Set End Property
![Page 18: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/18.jpg)
Cada objeto expone sus valores como propiedades
• Los valores obtenidos desde la base para una entidad determianda están contenidos en un array de tipo Object– Values()
• Se exponen como propiedades independientes haciendo la conversión necesaria– Idea “robada” del DataTable de los dataset
generados automáticamente
<ComponentModel.Bindable(True, ComponentModel.BindingDirection.TwoWay)> _ Public Property LName() As String Get Try Return CType(MyBase.Field("LName"), String) Catch e As System.InvalidCastException Return String.Empty End Try End Get Set(ByVal value As String) MyBase.Field("LName") = value If Me.Status = Desarrolladoras.Reglas.EntityStatus.NotReaded _ OrElse _ Me.Status = Desarrolladoras.Reglas.EntityStatus.Unchanged Then _ Me.Status = Desarrolladoras.Reglas.EntityStatus.Modified End Set End Property
![Page 19: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/19.jpg)
¿Y como agregar este código?
• Snippet Editor– No “viene” con VB pero se consigue fácil (y gratis)
• http://msdn.microsoft.com/vbasic/downloads/tools/snippeteditor/
– Permite agregar snippets personalizados• O modificar los existentes
– Se pueden crear a cualquier nivel• Clase• Miembro• Parte de un miembro
![Page 20: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/20.jpg)
Obtener múltiples registros
• La regla de negocio puede exponer directamente un DataTable– Con las columnas resultantes de ejecutar el
Procedimiento Almacenado– La nueva implementación de ADO vincula un
DataTable a sus propios DataAdapters• Pero pueden llenarse desde un componente de
datos
![Page 21: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/21.jpg)
Obtener múltiples registros
• ¿Y puedo tener un Dataset con todas las tablas y consultas de la base?– Si
• Pero no llenarlo
– Permite tener todos los objetos de tipo DataTable definidos en un solo lugar
• También se pueden tener en DataSets que agrupen por funcionalidad
• O las tablas separadas
![Page 22: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/22.jpg)
Exponer la vinculación
• Los orígenes de datos de ASP.Net 2.0 están pensados para múltiples registros– En contra de la regla de los ravioles
• Se debe exponer el objeto como si fuese una lista de instancias de sí mismo
Public Function [Select]() As System.Collections.Generic.List(Of Customer) Dim l As New System.Collections.Generic.List(Of Customer) l.Add(Me) Return l End Function
![Page 23: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/23.jpg)
Base de un ABM
• El usuario solicita– Ver los registros presentes
• Editar• Agregar• Eliminar
![Page 24: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/24.jpg)
Implementación
Multiview
View1
GridView
View2
FormView
ObjectDataSource1ObjectDataSource1
ObjectDataSource2ObjectDataSource2
![Page 25: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/25.jpg)
View1
• Datasource que obtiene el DataTable con los registros
• GridView con las columnas que interesan– Un template con iconos para modificar y
eliminar
![Page 26: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/26.jpg)
View2
• FormView– En modo Edit para la edición– En modo ReadOnly para confirmar
eliminación
• DataSource que obtiene el método Select – Un List con un solo elemento– Codificar el evento ObjectCreating para
asignar el objeto específico a editar Protected Sub ObjectDataSource2_ObjectCreating( _ ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.ObjectDataSourceEventArgs) _ Handles ObjectDataSource2.ObjectCreating e.ObjectInstance = myEnt End Sub
![Page 27: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/27.jpg)
Actualización
• Codifica el evento ItemUpdating del FormView– El eventArgs recibe los nuevos valores ingresados
por el usuario, por orden de posición de los campos• Se puede usar un bucle para actualizar el objeto
• Persistir el objeto en edición entre llamadas– En Session– En ViewState– Page_Load– Page_PreRender
![Page 28: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara](https://reader036.vdocuments.co/reader036/viewer/2022062511/54d01b924979592e558b464b/html5/thumbnails/28.jpg)
¿Preguntas?
• Espero que ahora puedan descansar así