2017-07-10 4 views
0

Je suis en train de créer des classes POCO pour l'EF de code à utiliser dans mon projet ASP.NET MVC. J'essaye de faire une liste déroulante pour l'un des champs basés sur this answer, mais EF a jeté une erreur en essayant d'ajouter la migration.EntityFramework n'est pas satisfait de System.Web.Mvc.SelectList

Mise à jour: Suppression de SelectListItems du POCO, mais toujours la même erreur EF.

extrait pertinent de Poco:

using System.Web.Mvc; 

public class Organization 
{ 
    [DisplayName("Bank Name")] 
    [Required(ErrorMessage = "Bank Name is required.")] 
    public string AccountBank { get; set; } 

    public IEnumerable<SelectListItem> Banks { get; set; } 
} 

EF Erreur:

Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

+0

Normalement, vous ne souhaitez pas stocker d'entités SelectListItem dans votre base de données. Au lieu de cela, vous devez avoir une entité Bank et créer SelectListItems uniquement dans l'interface utilisateur. –

+1

Pourquoi est-ce que vous ajoutez la logique de vue dans les EF POCO? –

+1

Un 'SelectListItem' est pour l'interface utilisateur. Il ne devrait pas être stocké dans votre base de données et ne devrait pas être dans votre POCO. Votre base de données (= modèle de données = business model) doit stocker les objets métier. L'interface utilisateur (vue et/ou contrôleur) doit convertir les objets métier en un format pouvant être utilisé par votre vue, c'est-à-dire les éléments de liste de sélection. –

Répondre

2

Cette erreur se produit lorsque l'ensemble de System.Web.Mvc que vous avez inclus dans votre projet ne correspond pas à la version nombre que vous avez explicitement défini dans votre fichier de configuration. Allez vous assurer que les versions correspondent.

Etes-vous simplement en train d'essayer d'obtenir le nom de la banque via une liste déroulante dans la vue? Si tel est le cas, vous ajoutez une complexité inutile à votre modèle en faisant de la liste de sélection une partie de votre modèle. Vous feriez mieux de simplement charger cette liste dans le viewbag et de définir la valeur sélectionnée et o votre propriété de modèle.