Dans ma base de données, j'ai une table appelée « suivi » avec les colonnes suivantes:Entity Framework: Type « cartographié comme un type complexe » Erreur
[OrderNumber] [varchar](50) NULL,
[TrackingNumber] [varchar](50) NULL,
[emailaddress] [varchar](100) NULL,
[courier] [varchar](10) NULL
J'ai une classe appelée Tracking pour représenter les entités de la tableau:
public class Tracking
{
public virtual string OrderNumber { get; set; }
public virtual string TrackingNumber { get; set; }
public virtual string EmailAddress { get; set; }
public virtual string Courier { get; set; }
}
Dans la définition de mon contexte de données
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TrackingConfig());
}
internal class TrackingConfig : EntityTypeConfiguration<Tracking>
{
internal TrackingConfig()
{
Property(x => x.OrderNumber);
Property(x => x.TrackingNumber);
Property(a => a.EmailAddress).HasColumnName("emailaddress");
Property(a => a.Courier).HasColumnName("courier");
}
}
Comme vous pouvez le voir, je ne suis pas exp le jeter licitement comme un type complexe. J'ai même utilisé HasColumnName pour spécifier quel nom de colonne correspond à quelle propriété de la classe, juste au cas où il échouerait à les reconnaître en raison des différences de capitalisation. (L'erreur que j'obtiens se produit que HasColumnName soit ou non utilisé, comme il s'avère.)
Lorsque j'appelle le référentiel que j'ai configuré pour une raison quelconque, l'initialisation échoue et Entity Framework lève une exception :
The type 'Tracking' is mapped as a complex type. The Set method, DbSet objects, and DbEntityEntry objects can only be used with entity types, not complex types.
Je ne suis pas le définir comme un type complexe ... pourquoi traite EF4 comme un?
Merci - suppression virtuelle et l'ajout des annotations a fait l'affaire. J'ai aussi remarqué que l'une de mes autres tables avait un schéma autre que "dbo" et que je devais le mettre dans les annotations. – AJH