Я работаю с Audit.NET, фреймворк аудит с открытым исходным кодом, который обеспечивает расширение для Entity Framework и DbContext
здесь: AuditDbContext.csтретьих сторон DbContext, как и реализовать IdentityDbContext
// Implements DbContext public abstract partial class AuditDbContext : DbContext
Я хотел бы реализовать Audit.NET в своем проекте, используя это расширение Entity Framework, потому что он автоматизирует многие шаги, которые мне пришлось бы делать вручную (я могу использовать Audit.NET вручную и без Entity Framework расширение). Проблема, с которой я сталкиваюсь, заключается в том, что мой репозиторий решений реализует IdentityDbContext
, который, конечно же, является реализацией DbContext
.
// Implements IdentityDbContext public class MyDataContext : IdentityDbContext<ApplicationUser> { public MyDataContext() : base("DefaultConnection") { } ...
Там нет существующего AuditDbContext
, который реализует IdentityDbContext
.
Я не могу думать о чистом виде, чтобы смешать эти два вместе и сделать мое хранилище использовать AuditDbContext
, особенно с учетом того, что AuditDbContext
защищала конструкторы, и что как DbContext
и IdentityDbContext
имеют protected
метод. Я попытался создать композицию под названием AuditIdentityDbContext
, которая имела private
копий каждого контекста, но я не могу выполнить все их интерфейсы, сделав это.
Похоже, что все 3 DbContext
типам необходимо наследовать из-за членов protected
. Впервые в моей карьере я чувствую, что многократное наследование может действительно помочь в этой ситуации, но, учитывая, что это не возможно, какая была бы лучшая альтернатива?
Единственное, что я могу придумать, это создать новый класс, который наследует либо AuditDbContext
, либо IdentityDbContext<TUser>
и вручную реализует все, что осталось, чтобы соответствовать функциональности другого. В настоящее время классов интерфейса нет, поэтому я уверен, что это не сработает. Я чувствую, что, должно быть, что-то забываю.
Вау, большое вам спасибо за ваш быстрый ответ! На самом деле отличный пакет, и я ценю вашу тяжелую работу! – trnelson