« hello world! » diapositive no.1. ajout de la logique daffaire (« business logic ») dans...

18
« Hello World! » Diapositive no.1

Upload: leonie-gonzalez

Post on 03-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

« Hello World! »

Diapositive no.1

Page 2: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 3: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 4: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 5: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 6: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 7: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 8: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 9: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 10: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 11: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 12: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 13: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 14: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 15: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 16: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

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

Page 17: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

Bibliographie et suggestions de lectures\DevForce\Learning Resources\030_Hello

DevForce

Diapositive no.17

Page 18: « Hello World! » Diapositive no.1. Ajout de la logique daffaire (« Business Logic ») Dans lentité « Employee » : /// /// Age as of today /// public int

Conclusion

Diapositive no.18