2 votes

Entity Framework 6+ Code First plusieurs modèles dans une vue

Modèles :

ManufacturersModel.cs

public class Manufacturers
{
    [Key]
    public int ManufacturerID { get; set; }
    [Required]
    [StringLength(100)]
    public string Name { get; set; }
    public int AddressID { get; set; }
    public Address Address { get; set; }
    [EmailAddress]
    [StringLength(150)]
    public string EmailAddress { get; set; }
    [Phone]
    [StringLength(20)]
    public string PhoneNumber { get; set; }
    public ICollection<Brands> Brands { get; set; }
}

BrandsModel.cs

public class Brands
{
    [Key]
    public int BrandID { get; set; }
    [Required]
    [StringLength(100)]
    public string BrandName { get; set; }
    [Required]
    public int ManufacturerID { get; set; }
    public Manufacturers Manufacturers { get; set; }
    public ICollection<Products> Products { get; set; }
}

Ainsi, lorsque j'essaie de créer une page "Créer" pour les marques, je veux avoir deux champs : Nom de la marque et Nom du fabricant. Le nom de la marque serait une zone de texte/éditeur dans laquelle l'utilisateur entrerait ce qu'il veut. Je veux que le nom du fabricant, en raison des dépendances, soit une liste déroulante d'autocomplétion jQuery UI, de sorte que je sache que la dépendance sera respectée. Cependant, je ne sais pas si mon @modèle doit être Marques ou Fabricants.

Cela s'étend à d'autres pages sur lesquelles je vais probablement travailler et qui peuvent nécessiter plus d'un modèle. J'ai un contexte qui contient tous les modèles que j'ai créés, mais je ne sais pas si je peux/doit envoyer le contexte à la page, ou seulement au(x) modèle(s). Une autre page, à titre d'exemple, que je voudrais créer est une page Créer un produit qui aurait une liste déroulante autocomplète jQuery UI pour le nom du fabricant ainsi qu'une liste déroulante autocomplète jQuery UI pour le nom de la marque, car les produits sont liés à la marque de la même manière que la marque est liée au fabricant.

Je me lance dans le développement de Code First et j'ai besoin de toute l'aide et de tous les conseils que je peux obtenir. Merci beaucoup.

1voto

Bradley Uffner Points 12947

Ces classes ressemblent à un modèle de données. Vous ne voudrez probablement pas les utiliser comme modèle réel de votre page (parfois appelé modèle de vue). Vous devriez envisager de créer un modèle spécifique à votre page, dont les propriétés représentent les données nécessaires au rendu de cette page. Ce modèle ne sera pas stocké dans la base de données, il s'agit d'un modèle utilisé uniquement pour l'application.

Dans votre cas, pour cette page, je créerais un modèle ayant une propriété de type chaîne de caractères pour le nom de marque saisi, et une propriété de type entier pour le fabricant sélectionné. Vous pouvez également envisager d'ajouter une propriété qui est une liste de paires clé-valeur pour agir comme source de données de la sélection du fabricant, bien que vous puissiez également obtenir ces données via ajax sur une méthode d'action alternative du contrôleur si vous voulez être fantaisiste.

Le contrôleur doit être responsable de la création et du remplissage de ce modèle de vue avec des informations provenant du modèle de données, et il fera également l'inverse lors de l'enregistrement.

Cela ressemble plus à une question sur MVC que sur Entity Framework.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X