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

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

Embed Size (px)

Citation preview

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í