Слайд 2Сегодня в докладе…
Поговорим… Что такое Dynamic Data?
Посмотрим... Как оно выглядит?
Подумаем... Подходит ли
нам?
Слайд 3Что такое Dynamic Data?
Оснастка для работы с данными
Гибкая кастомизация
Валидация данных
Доступно в .NET
FW 3.5 SP1 / 4.0
Слайд 4Архитектура Dynamic Data
Источник данных
Модель данных
Мета-данные
Слайд 5Три шага к Dynamic Data
Определить модель данных
Зарегистрировать модель
Кастомизировать шаблоны
Слайд 8Маршрутизация
routes.Add( new DynamicDataRoute("{table}/{action}.aspx")
{
Constraints= new RouteValueDictionary( new { action= "List|Details|Edit|Insert" }),
Model= model
});
routes.Add(new
DynamicDataRoute("{table}/ListDetails.aspx") {
Action= PageAction.List,ViewName= "ListDetails", Model= model});
routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx"){
Action= PageAction.Details, ViewName= "ListDetails",Model= model});
Слайд 9Контролы и страницы
"
VisibleDate="<%# (FieldValue!=null)? FieldValue:DateTime.Now%>"
Слайд 10Применение мета-данных
using System;
using System.ComponentModel.DataAnnotations;
[MetadataType(typeof(EmployeeMetadata))]
public partial class Employee
{
}
public class EmployeeMetadata
{
[UIHint("DateTimeCalendar")]
public objectHireDate{ get; set;
}
}
Слайд 11Валидация
public class CustomerMetadata{
[Required()]
public object Title;
}
public partial class Customer {
partial void
OnTitleChanging(string value) {
if(!Char.IsUpper(value[0])) {throw new ValidationException(“!!!"); }
}
}
Слайд 12Валидация
public partial class Employee{
partial void OnValidate(System.Data.Linq.ChangeAction action){
if(action== System.Data.Linq.ChangeAction.Insert)) {
if(this._BirthDate.Value.CompateTo(DateTime.Now)>0)
throw new ValidationException(“!!!”);
}
}
}
Слайд 13Возможности
Независимость от слоя данных
LINQ2SQL, Entity Framework,ADO.NET Data Services
Правила валидации
Атрибуты полей на уровне
модели
Ограничение доступа
На уровне web.confg / на уровне страницы