Entity Framework Tutorial Propriété inverse
L'attribut InverseProperty
est utilisé pour désigner la propriété de navigation inverse d'une relation lorsque le même type participe à plusieurs relations.
- Il est utilisé lorsque vous devez indiquer que la propriété de navigation d'une classe est liée à la même clé étrangère qu'une autre propriété de navigation d'une autre classe.
- Par exemple, dans la classe
Book
, vous souhaiterez peut-être savoir qui a écrit un livre et qui l'a édité.
Dans l'exemple suivant, nous avons ajouté deux nouvelles propriétés de navigation pour la classe 'Author'.
public class Book { public int BookId { get; set; } public string Title { get; set; } public Author CreatedBy { get; set; } public Author UpdatedBy { get; set; } }
La classe Author
possède des propriétés de navigation dans la classe Book
, une pour tous les livres écrits par l'auteur et une pour tous les livres mis à jour par cet auteur.
public class Author { public int AuthorId { get; set; } public string Name { get; set; } public virtual ICollection<Book> BooksWritten { get; set; } public virtual ICollection<Book> BooksUpdated { get; set; } }
L'attribut InverseProperty
est appliqué aux propriétés de navigation de la classe Author
pour spécifier leurs propriétés de navigation inverse correspondantes dans la classe Book
.
public class Book { public int BookId { get; set; } public string Title { get; set; } public Author CreatedBy { get; set; } public Author UpdatedBy { get; set; } } public class Author { public int AuthorId { get; set; } public string Name { get; set; } [InverseProperty("CreatedBy")] public virtual ICollection<Book> BooksWritten { get; set; } [InverseProperty("UpdatedBy")] public virtual ICollection<Book> BooksUpdated { get; set; } }