Entity Framework Core - создание миграции и получение непонятной ошибки о том, что я добавляю свойство дважды - PullRequest
1 голос
/ 30 марта 2020

Я запустил миграцию для своего решения и получаю следующую ошибку.

Свойство или навигацию «ClientNotes» нельзя добавить к типу сущности «Клиент», поскольку свойство или навигация с такое же имя уже существует в типе сущности «Клиент».

Это моя сущность клиента:

using System;
using System.Collections.Generic;
using JobsLedger.INTERFACES;

namespace JobsLedger.DATA.ENTITIES
{
#nullable enable
    public class Client : IEntityBase, IAuditedEntityBase
    {
        public Client()
        {
            ClientNotes = new List<Note>();
            Jobs = new List<Job>();
        }

        public string ClientNo { get; set; } = default!;
        public bool Company { get; set; }
        public string? CompanyName { get; set; }
        public string? Abn { get; set; }
        public bool IsWarrantyCompany { set; get; }
        public bool RequiresPartsPayment { set; get; }
        public string? ClientFirstName { get; set; }
        public string ClientLastName { get; set; } = default!;
        public string? Email { get; set; }
        public string? MobilePhone { get; set; }
        public string? Phone { get; set; }
        public string? Address1 { get; set; }
        public string? Address2 { get; set; }
        public string? BankName { get; set; }
        public string? BankBSB { get; set; }
        public string? BankAccount { get; set; }
        public bool Active { get; set; }
        public DateTime? DateDeActivated { get; set; }
        public bool Activity { get; set; }

        // One warranty company client to a job.
        public int? WarrantyCompanyId { get; set; }

        public virtual Job? WarrantyCompany { get; set; }

        // One suburb to a client.
        public int? SuburbId { get; set; }
        public virtual Suburb? Suburb { get; set; }

        // If its a warranty company then we simply link it one to one to the brand id.
        public virtual Brand? Brand { get; set; }

        // Multiple notes for each client.
        public virtual ICollection<Note>? ClientNotes { get; set; }

        // Multiple jobs for each client.
        public virtual ICollection<Job>? Jobs { get; set; }

        public virtual ICollection<Job> WarrantyCompanyJobs { get; } = default!;
        public int Id { get; set; }
    }
#nullable disable
}

Это моя сущность заметки:

using JobsLedger.INTERFACES;
using System;
using System.Collections.Generic;
using System.Text;

namespace JobsLedger.DATA.ENTITIES
{
    public class Note : IEntityBase, IAuditedEntityBase
    {
#nullable enable
        public int Id { get; set; }
        public string? Details { get; set; }

        public int? JobId { get; set; }
        public virtual Job? Job { get; set; }

        public int? ClientId { get; set; }
        public virtual Client? Client { get; set; }

        public int? NoteTypeId { get; set; }
        public virtual NoteType? NoteType { get; set; }
    }
#nullable disable
}

Используя Fluent API, и поэтому я добавляю заметки к клиенту ... имейте в виду, что у меня может быть несколько заметок для каждого клиента ...

        modelBuilder.Entity<Note>()
            .HasOne(j => j.Client)
            .WithMany(s => s.ClientNotes)
            .HasForeignKey(j => j.ClientId)
            .IsRequired(false);

Однако заметки не являются обязательными. Вы можете записать одну или несколько заметок и т. д. c .. У меня есть ряд похожих на это отношений, и я считаю, что они работают, но по какой-то причине это указывает на то, что у меня есть другое свойство с таким же именем ..

Это может быть заметка клиента - нужно, чтобы она была связана с клиентом, или это может быть заметка о работе - связать ее с работой. Не могу иметь clientId для служебной записки или наоборот ... например, идентификатор клиента должен быть нулевым, если это служебная записка ..

Что я делаю неправильно и почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...