Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

28
Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara www.sqlu.com

Transcript of Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

Page 1: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

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 .

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 .

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 .

Así era en 2000

Page 5: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

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 .

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 .

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 .

Y así queda

Page 9: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

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 .

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 .

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 .

“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 .

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 .

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 .

Componentes base

• Como siempre un servicio de datos

Page 16: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

Reglas “Base”

Tranquilos. Veremos algunos detalles luego

Page 17: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

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 .

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 .

¿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 .

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 .

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 .

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 .

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 .

Implementación

Multiview

View1

GridView

View2

FormView

ObjectDataSource1ObjectDataSource1

ObjectDataSource2ObjectDataSource2

Page 25: Facilitando la vida del desarrollador con Visual Studio 2005 Daniel A. Seara .

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 .

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 .

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 .

¿Preguntas?

• Espero que ahora puedan descansar así