Bonjour à tous,
J'ai un problème avec le lazy loading. J'ai une entité Client qui possède une ref à une entité Address. Voici la structure de ses classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 //Interface entité public interface IBaseEntity { int? Id { get; set; } DateTime? Versioning { get; set; } } //Classe de base pour les entités [Serializable] public class BaseEntity : IBaseEntity { [Key] [Column("Id")] public int? Id { get; set; } [ConcurrencyCheck] [Column("Versioning")] public DateTime? Versioning { get; set; } public IBaseEntity Deepclone() { using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, this); ms.Position = 0; return (IBaseEntity) formatter.Deserialize(ms); } } } [Table("clients")] [Serializable] public class Client : PersonalInformation { [Required] [MaxLength(32)] [Column("CompanyName")] public string CompanyName { get; set; } [Column("address_id")] public int? BillingAddressId { get; set; } [ForeignKey("BillingAddressId")] public virtual Address BillingAddress { get; set; }
Et lorsque je crée un client avec un formulaire WPF, le champ BillingAddress ne se met pas à jour (d'ailleurs il n'est même pas initialiser). Ce problème se règle lorsque j'initialise ma propriété Client comme ceci :
Je sais que ça vient du fait que le champ est en virtual pour respecter le lazy loading. Mais comment faire pour que le champ BillingAddress soit initialiser et bindable dès la création de la propriété currentClient sans devoir initialiser le champ ? Faut-il l'initaliser dans le constructeur de la classe Client ? (Mais dans ce cas là, est-ce qu'il n'y a pas un problème au niveau des performances ?) Ou y a-t-il une solution plus adapté ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var currentClient = new Client { BillingAddress = new Address() };
Merci d'avance pour votre aide =)
Partager