Le nom de la propriété dans un type doit être unique

Je suis en utilisant Entity Framework 5 et j'ai les entités suivantes:

public class User {
  public Int32 Id { get; set; }
  public String Username { get; set; }    
  public virtual ICollection<CLaim> CLaims { get; set; }
}

public class Claim {
  public Int32 Id { get; set; }
  public String Type { get; set; }
  public String Value { get; set; }
  public virtual User User { get; set; }
}

Quelques notes à propos de ces entités:

  1. Dans l'entité Utilisateur, l'Id est le PK;
  2. Dans la Revendication de l'entité de l'Id est un FK et est égale à l'Utilisateur.Id;
  3. Dans la Revendication de l'entité de la PK est composé de (Id, Type, Valeur)

J'ai donc l'instruction SQL suivante pour ces entités:

create table dbo.Users
(
  Id int identity not null 
    constraint PK_Users_Id primary key clustered (Id),  
  Username nvarchar (120) not null
    constraint UQ_Users_Username unique (Username)
);

create table dbo.Claims
(
  Id int not null,
  [Type] nvarchar (200) not null,
  Value nvarchar (200) not null,
    constraint PK_Claims_Id_Type_Value primary key (Id, [Type], Value),
);

alter table dbo.Claims
add constraint FK_CLaims_Id foreign key (Id) 
    references dbo.Users(Id) on delete cascade on update cascade;

Enfin, la configuration de ces entités sont les suivantes:

internal class UserConfiguration : EntityTypeConfiguration<User> {
  internal UserConfiguration() : base() {
    ToTable("Users");
    HasKey(x => x.Id);
    Property(x => x.Id).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    Property(x => x.Username).IsRequired().HasMaxLength(120);
  }
}

internal class ClaimConfiguration : EntityTypeConfiguration<Claim> {
  internal ClaimMapper() : base() {
    ToTable("Claims");
    HasKey(x => new { x.Id, x.Type, x.Value });
    Property(x => x.Id).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    Property(x => x.Type).IsRequired().HasMaxLength(200);
    Property(x => x.Value).IsRequired().HasMaxLength(200);

    HasRequired<User>(x => x.User).WithMany(y => y.Claims).Map(z => { z.MapKey("Id"); });
  }
}

LE PROBLÈME:

Lorsque j'essaie de créer un utilisateur je reçois l'erreur suivante:

Chaque nom de propriété dans un type doit être unique. Nom de la propriété " Id " est déjà définie.

Personne ne sait ce que je fais de mal?

source d'informationauteur Miguel Moura | 2013-07-14