« hello world! » diapositive no.1. ajout de la logique daffaire (« business logic ») dans...
TRANSCRIPT
« Hello World! »
Diapositive no.1
Ajout de la logique d’affaire (« Business Logic »)Dans l’entité « Employee » :
/// <summary> /// Age as of today /// </summary> public int Age { get {
if (null == this.BirthDate) return 0; DateTime oBirthDate = (DateTime)this.BirthDate; DateTime oToday = DateTime.Today; int oAge = oToday.Year - oBirthDate.Year; if (oBirthDate.AddYears(oAge) > oToday) oAge--; if (oAge < 0) return 0; else return oAge;
} }
Diapositive no.2
Ajout de la logique d’affaire (« Business Logic ») : Suite Et encore une fois dans l’entité « Employee » :
/// <summary> /// Total revenue for this Employee's orders /// </summary> public double TotalOrderRevenue { get { double revenue = 0; foreach (Order aOrder in this.Orders) { foreach (OrderDetail aOrderDetail in
aOrder.OrderDetails) { revenue += aOrderDetail.Quantity * Convert.ToDouble(aOrderDetail.UnitPrice) *
aOrderDetail.Discount; } } return revenue; } }
Diapositive no.3
Ajout de la logique d’affaire (« Business Logic ») : Suite
Observation des propriétés générées par l’OM: Ouvrir en mode « Code » le fichierDomainModel.ServerModelNorthwindIB.Designer.cs
Observer la propriété « LastName »
Diapositive no.4
Ajout de la logique d’affaire (« Business Logic ») : SuiteImplémentation d’un intercepteur dans
l’entité « Employee » :
[AfterGet(EntityPropertyNames.LastName)] public void UppercaseLastName(PropertyInterceptorArgs<Employee, String> args) {
var lastName = args.Value; if ( !String.IsNullOrEmpty(lastName)) { args.Value = args.Value.ToUpper(); } }
Diapositive no.5
Ajout un interface usager (« UI »)De type « Console » :
1. Compiler le « DomainModel »2. Ajouter un nouveau projet de type « Console
Application », nommée « Console01 »3. Ajouter les références suivantes au projet
« Console01 » :1. DomainModel2. IdeaBlade.EntityModel
4. Assigner « Console01 » comme projet de démarrage (« Startup Project »)
5. Ajouter le code suivant :
Diapositive no.6
Ajout un interface usager (« UI ») : suiteusing System; using System.Collections.Generic; using System.Linq; using System.Text; using IdeaBlade.EntityModel; using DomainModel; namespace Console01 { class Program { static void Main(string[] args) { GetEmployees(); } private static void GetEmployees() { var query = _manager.Employees; foreach (Employee anEmployee in query) { Console.WriteLine("Last Name = " + anEmployee.LastName); Console.WriteLine("\tBirth date = " +
anEmployee.BirthDate.ToString()); Console.WriteLine("\tAge = " + anEmployee.Age);
Diapositive no.7
Ajout un interface usager (« UI ») : suite Console.WriteLine(String.Format("\tTotal Order Revenue: {0:C}",
anEmployee.TotalOrderRevenue)); Console.WriteLine(); } PromptToContinue(); } private static void PromptToContinue() { Console.WriteLine(); Console.WriteLine("Press ENTER to continue..."); Console.ReadLine(); } #region Private Fields static DomainModelEntityManager _manager = DomainModelEntityManager.DefaultManager; #endregion } }
Diapositive no.8
Ajout un interface usager (« UI ») : suiteDe type « WinForm » :
1. Compiler le « DomainModel »2. Ajouter un nouveau projet de type
« Windows Form Application », nommée « WinForms01 »
3. Ajouter les références suivantes au projet « WinForms01 » :
1. DomainModel2. IdeaBlade.EntityModel3. IdeaBlade.Core4. WindowsBase (.Net Assembly)
Diapositive no.9
Ajout un interface usager (« UI ») : suite
4. Assigner « WinForms01 » comme projet de démarrage (« Startup Project »)
5. Renommer le formulaire : 1. “Form1” devient “Employees”2. “Form1.cs” devient
“EmployeeForm.cs”
6. Glisser deux « Binding Sources » ou « Sources de données » :
4. “_ordersBindingSource”5. “_employeesBindingSource”
Diapositive no.10
Ajout un interface usager (« UI ») : suite7. Glisser un BindingNavigator dans le coin en haut
à gauche. Le nommer : “_employeesBindingNavigator”
8. Glisser un ControlBindingManager (“_employeesControlBindingManager”) et un DataGridViewBindingManager (“_ordersDataGridViewBindingManager”)
9. Configurer le “_employeesControlBindingManager”
1. assigner le binding source à “_employeesBindingSource”
2. ajouter les propriétés LastName, FirstName, BirthDate, Age et Photo (par le “Smart Tag” -> “Autopopulate Controls”)
3. mettre à jour le “naming convension” : _
Diapositive no.11
Ajout un interface usager (« UI ») : suite10. Configurer le
“_ordersDataGridViewBindingManager”1. assigner le binding source à
“_ordersBindingSource”2. ajouter les propriétés OrderDate,
RequiredDate, ShippedDate, et FreightCost.
3. ajouter les propriétés suivante du client : CompanyName (et la renommer “Company”)
4. cliquer sur “Create Grid” et la nommer “_ordersDataGridView”
11. Ajouter le code suivant :
Diapositive no.12
Ajout un interface usager (« UI ») : suiteusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using IdeaBlade.EntityModel; using IdeaBlade.Util; using DomainModel; namespace WinForms01 { public partial class EmployeeForm : Form { public EmployeeForm() { InitializeComponent(); this.Load+=new EventHandler(EmployeeForm_Load); }
Diapositive no.13
Ajout un interface usager (« UI ») : suite private void EmployeeForm_Load(object sender, EventArgs e) { ConfigureBindingSources(); ConfigureBindingNavigators(); ConfigureBindingManagers(); ConfigureHandlers(); LoadData(); } private void ConfigureBindingSources() {
_employeesBindingSource.DataSource = _employees; _ordersBindingSource.DataSource = _orders; } private void ConfigureBindingNavigators() { _employeesBindingNavigator.BindingSource =
_employeesBindingSource; }
Diapositive no.14
Ajout un interface usager (« UI ») : suite private void ConfigureBindingManagers() { _employeesControlBindingManager.BindingSource =
_employeesBindingSource; _ordersDataGridViewBindingManager.BindingSource =
_ordersBindingSource; } private void ConfigureHandlers() { _employeesBindingSource.CurrentChanged += new
EventHandler(_employeesBindingSource_CurrentChanged);
} void _employeesBindingSource_CurrentChanged(object sender,
EventArgs e) {
Employee currentEmployee = (Employee)_employeesBindingSource.Current;
_orders.ReplaceRange(currentEmployee.Orders); } private void LoadData() { _employees.ReplaceRange(_manager.Employees);
}
Diapositive no.15
Ajout un interface usager (« UI ») : suite #region Private Fields DomainModelEntityManager _manager = DomainModelEntityManager.DefaultManager; BindableList<Employee> _employees = new BindableList<Employee>();
BindableList<Order> _orders = new BindableList<Order>();
#endregion } }
Diapositive no.16
Bibliographie et suggestions de lectures\DevForce\Learning Resources\030_Hello
DevForce
Diapositive no.17
Conclusion
Diapositive no.18