Я использую C# и .net 6 с чистой архитектурой,
У меня есть это в решении «Core»: < /p>
В папке объектов < /p>
< /blockquote>
< /p>
< /blockquote>
Код: Выделить всё
public class Partenaire : AuditableBaseEntity
{
public string Nom { get; set; }
public string? Telephone { get; set; }
public string? Email { get; set; }
public string? Address { get; set; }
public string? ImmatriculeFiscale { get; set; }
public string? NumeroRegistreCommerce { get; set; }
public IEnumerable PartenaireContacts { get; set; }
public IEnumerable
PartenaireActivite { get; set; }
public virtual ICollection PartenaireDetailsBancaires { get; set; }
}
Код: Выделить всё
public interface IPartenaireContact : IAuditableEntity, ISoftDelete
{
public Guid PartenaireId { get; set; }
public Partenaire Partenaire { get; set; }
}
< /code>
Таким образом, мой Partenaire может иметь один или много PartenaireContact, PartenaiRecontact фактически наследует от идентификатора, потому что PartenaiReContact - это пользователь, который может войти в приложение < /p>
и в «Инфраструктуре»: < /p>
и в «Инфраструктуре». Папка < /p>
< /blockquote>
public class PartenaireContact : IdentityUser, IPartenaireContact
{
public Guid PartenaireId { get; set; }
public Partenaire Partenaire { get; set; }
public string Nom { get; set; }
public string Prenom { get; set; }
public string Identifiant { get; set; }
public string? FullName { get; set; }
public string? Fonction { get; set; }
public string? Tel { get; set; }
public string? Note { get; set; }
public string? ImageUrl { get; set; }
public bool IsActive { get; set; }
public string? RefreshToken { get; set; }
public DateTime RefreshTokenExpiryTime { get; set; }
public Guid CreatedBy { get; set; }
public DateTime Created { get; set; }
public Guid LastModifiedBy { get; set; }
public DateTime? LastModified { get; set; }
public DateTime? DeletedOn { get; set; }
public Guid? DeletedBy { get; set; }
}
< /code>
в папке данных < /p>
< /blockquote>
public class ApplicationDbContext : IdentityDbContext
{
private readonly IDateTimeService _dateTime;
private readonly ILoggerFactory _loggerFactory;
private readonly ICurrentUser _currentUser;
private readonly ISerializerService _serializer;
public ApplicationDbContext(DbContextOptions options,
IDateTimeService dateTime,
ILoggerFactory loggerFactory,
ICurrentUser currentUser,
ISerializerService serializer) : base(options)
{
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
_dateTime = dateTime;
_loggerFactory = loggerFactory;
_currentUser = currentUser;
_serializer = serializer;
}
public DbSet Partenaires { get; set; }
public DbSet Devises { get; set; }
public DbSet Activites { get; set; }
public DbSet PartenaireActivites { get; set; }
public DbSet PartenaireDetailsBancaires { get; set; }
public DbSet AuditTrails => Set();
public override async Task SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
{
var auditEntries = HandleAuditingBeforeSaveChanges();
int result = await base.SaveChangesAsync(cancellationToken);
await HandleAuditingAfterSaveChangesAsync(auditEntries, cancellationToken);
return result;
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.AppendGlobalQueryFilter(s => s.DeletedOn == null);
builder.Entity().HasKey(pa => new { pa.Partenaire, pa.ActiviteId });
builder.Entity()
.HasOne(pdb => pdb.Partenaire)
.WithMany(p => p.PartenaireDetailsBancaires)
.HasForeignKey(pdb => pdb.PartenaireId);
builder.Entity()
.HasOne(pdb => pdb.Devise)
.WithMany(d => d.PartenaireDetailsBancaires)
.HasForeignKey(pdb => pdb.DeviseId);
builder.Entity()
.HasOne(pdb => pdb.Partenaire)
.WithMany(p => p.PartenaireContacts)
.HasForeignKey(pdb => pdb.PartenaireId);
base.OnModelCreating(builder);
builder.ApplyConfigurationsFromAssembly(GetType().Assembly);
}
}
< /code>
Итак, когда я пытаюсь мигрировать, я имею эту ошибку: < /p>
Указанный тип
'аппликационно-кар /> Я знаю, что я должен сделать ipartenairecontact
Так что любая помощь, пожалуйста?
Подробнее здесь: https://stackoverflow.com/questions/734 ... as-an-enti