J'essaie d'utiliser des annotations de données pour valider mes modèles Entity Framework à l'aide de classes partielles.J'ai des problèmes avec MetadataType, Annotations et EF
On m'a dit dans ce article (MSDN), que la classe partielle devrait être dans le même espace de noms que le modèle de données. Mon modèle de données est situé dans EntityFrameworkDataProvider, donc ma classe partielle qui est situé à MyApp.Backend.Models ressemble à ceci:
using System.ComponentModel.DataAnnotations;
namespace EntityFrameworkDataProvider
{
[MetadataType(typeof(ItemMetaData))]
public partial class Item { }
public class ItemMetaData
{
[ScaffoldColumn(false)]
public object CreateDate { get; set; }
[Required]
public string DisplayName { get; set; }
[Required]
public string Description { get; set; }
}
}
Je valider le modèle dans ma classe de contrôleur comme ceci:
[HttpPost]
public ViewResult Edit(Item item)
{
if (!TryUpdateModel(item))
{
return View(item);
}
return View("Details", item);
}
Il compile sans erreurs. Cependant, en essayant de modifier un élément, cette erreur est ce que je reçois:
Message d'erreur du compilateur: CS0433: Le type 'EntityFrameworkDataProvider.Item' existe à la fois dans 'long-path.DLL' et dans 'long-path.DLL '
Je suppose que la classe Item est en cours de compilation deux fois ou quelque chose. Comment cette erreur devrait-elle être évitée?
Bien sûr, cela pourrait être correct mais cela ne change rien au fait que les deux assemblages "entrent en collision". +1 pour le pourboire, cependant. – Mickel
Est-ce que par hasard cette classe 'Item' définie dans un assembly séparé et distinct signifie que je veux dire différent de l'assembly qui contient le code que vous avez posté? –
Il s'agit de 2 projets ... EntityFrameworkDataProvider.Item et MyApp.Backend.Models (asp.net mvc app). Vous ne savez pas si le projet séparé == assemblage séparé? – Mickel