EF Zusammengesetzten Schlüssel, der fluent-API

Ich versuche die Karte einen zusammengesetzten Schlüssel für eine Entität.

public class Customer 
{
    public int CustomerId { get; set; }
    public virtual List<CustomerImage> CustomerImages { get; set; }
}

Und seine Karte:

public class CustomerMap : EntityTypeConfiguration<Customer>
{
    public CustomerMap()
    {
        HasKey(t => t.CustomerId);
        ToTable(DbConstants.k_CustomersImageTable);
    }
}

Einem Bild:

public class Image
{
    public int ImageId { get; set; }
}

Und seine Karte:

public class ImageMap : EntityTypeConfiguration<Image>
{
    public ImageMap()
    {
        HasKey(t => t.ImageId);
        ToTable(DbConstants.k_ImagesTable);
    }
}

Und die navigation Immobilie:

public class CustomerImage
{
    public int CustomerId { get; set; }
    public int ImageId { get; set; }
    public virtual Customer CustomerRelated { get; set; }
    public virtual Image ImageRelated { get; set; }
}

Und seine Karte:

public class CustomerImageMap : EntityTypeConfiguration<CustomerImage>
{
    public CustomerImageMap()
    {
        HasKey(t => new { t.CustomerId, t.ImageId });
        Property(t => t.CustomerId).IsRequired().HasColumnOrder(0);
        Property(t => t.ImageId).IsRequired().HasColumnOrder(1);
        HasRequired(t => t.ImageRelated).WithMany().HasForeignKey(x => x.ImageId);
        HasRequired(p => p.CustomerRelated)
            .WithMany(p => p.CustomerImages)
            .WillCascadeOnDelete(false);

        ToTable(DbConstants.k_CustomersImageTable);
    }
}

Aber ich bekomme immer folgende exception:

Einen oder mehrere Fehler bei der Validierung festgestellt wurden, während Modell-generation:

System.Daten.Entität.Edm.EdmEntityType: : EntityType 'CustomerImage' hat keine definierten Schlüssel. Definieren Sie den Schlüssel für diese EntityType.

System.Daten.Entität.Edm.EdmEntitySet: EntityType: "EntitySet 'CustomerImages' basiert auf Typ 'CustomerImage', die hat keine Tasten definiert.

Jedoch, wenn ich definieren Sie den composite-Schlüssel mit Daten-Anmerkungen, die ist nicht sehr schön, es funktioniert perfekt:

public class CustomerImage
{
    [Key, Column(Order = 0)]
    public int CustomerId { get; set; }
    [Key, Column(Order = 1)]  
    public int ImageId { get; set; }
}

Und seine Karte:

public class CustomerImageMap : EntityTypeConfiguration<CustomerImage>
{
    public CustomerImageMap()
    {
        ToTable(DbConstants.k_CustomersImageTable);
    }
}

Habe ich versucht, viele Variationen der Definitionen, aber keiner scheint zu funktionieren.
Irgendeine Idee? Ist es EF bug?

InformationsquelleAutor Tomer | 2013-10-16
Schreibe einen Kommentar