Отношение "многие ко многим" в EF Api Fluent error - PullRequest
0 голосов
/ 09 июля 2020

Когда я пытаюсь установить связь «многие-ко-многим» с Fluent API на. Net Core, я получаю сообщение об ошибке: add-migration:

The property or navigation 'MembreId' cannot be added to the entity type 'Gracci.Models.Achat' because a property or navigation with the same name already exists on entity type 'Gracci.Models.Achat'.

Модель Achat содержит покупки пользователя

    public class Achat
    {

        public int Id { get; set; }
        public int MembreId { get; set; }
        public Membre Membre { get; set; }
        public int ProduitId { get; set; }
        public Produit Produit { get; set; }
        public DateTime Date { get; set; }
        public int Unite { get; set; }
    }

Модель Membre содержит данные участника

public class Membre
    {
        public int Id { get; set; }
        [Required]
        [MaxLength(35)]
        public string Nom { get; set; }
        [Required]
        [MaxLength(35)]
        public string Prenom { get; set; }
        [Required]
        [MaxLength(255)]
        public string Email { get; set; }
        [Required]
        [MaxLength(255)]
        public string MotDePasse { get; set; }
        [Required]
        [DefaultValue(false)]
        public bool IsResponsable { get; set; }
        [Required]
        [DefaultValue(0.0)]
        public float Solde { get; set; }
        public ICollection<Achat> Achats { get; set; }

    }

Модель Produit содержит товары для продажи

public class Produit
    {
        public int Id { get; set; }
        [Required]
        [MaxLength(150)]
        public string Name { get; set; }
        [Required]
        public float Price { get; set; }
        [Required]
        public int Stock { get; set; }
        [Required]
        [DefaultValue(true)]
        public bool? isActif { get; set; }
        public ICollection<Achat> Achats { get; set; }
    }

Код для моих отношений между Member - Purchase - Product в GracciDbContext. Я добавил DbSet<Membre>, DbSet<Achat> и DbSet<Produit>

            /* FLUENT API ACHAT */
            modelBuilder.Entity<Achat>()
                .Property(s => s.Unite)
                .IsRequired()
                .HasDefaultValue(1);
            modelBuilder.Entity<Achat>()
                .Property(s => s.Date)
                .IsRequired()
                .HasDefaultValueSql("getdate()");


            /* FLUENT API ACHAT - PRODUIT/MEMBRE MANY-TO-MANY */
            modelBuilder.Entity<Achat>().HasKey(p => new { p.MembreId, p.ProduitId});*/

           modelBuilder.Entity<Achat>()
                .HasOne<Produit>(achat => achat.Produit)
                .WithMany(prod => prod.Achats)
                .HasForeignKey(s => s.ProduitId);

            modelBuilder.Entity<Achat>()
                .HasOne<Membre>(achat => achat.Membre)
                .WithMany(memb => memb.Achats)
                .HasForeignKey(s => s.MembreId);

Я использовал Fluent Api для ограничений, но преобразовал это в аннотацию ...

1 Ответ

0 голосов
/ 09 июля 2020

Я удалил миграции, имеющиеся в соответствующей папке. И добавление-миграция сработала.

...