Mango.Nop.Libraries/Mango.Nop.Data/README.md

1.7 KiB

Mango.Nop.Data

@project { type = "framework" own-dep-projects = [ "AyCode.Core, AyCode.Core.Server, AyCode.Entities, AyCode.Entities.Server, AyCode.Interfaces, AyCode.Interfaces.Server, AyCode.Utils (in AyCode.Core repo)" ] }

Data access layer with repository base classes and DB context abstractions. net9.0.

Documentation

Document Topic
REPOSITORIES.md MgDbTableBase, MgDtoDbTableBase — CRUD hooks, timestamps, delete rules, event bridging
TRANSACTIONS.md MgDbContextBase — 4 transaction methods, lock strategy, callback contract

Folder Structure

Folder Purpose
Interfaces/ Repository interfaces: IMgDalBase, IMgDbContextBase, IMgDbTableBase
Repositories/ Repository base implementations: MgDalBase, MgDbContextBase, MgDbTableBase, MgDtoDbTableBase

Inheritance Chains

Repository hierarchy

nopCommerce EntityRepository<TEntity> (Nop.Data)
  +-- MgDbTableBase<TEntity>
        +-- MgDtoDbTableBase<TDtoEntity, TMainEntity>

Context hierarchy

MgDbContextBase (abstract, implements IMgDbContextBase)
  +-- [Consumer DbContexts in plugins]

DAL hierarchy

MgDalBase<TDbContext> (implements IMgDalBase<TDbContext>)
  +-- [Consumer DALs in plugins]

Interfaces

Interface Purpose
IMgDbTableBase Marker interface for repository classes
IMgDbContextBase Contract: Logger, DataProvider, Orders, Products, 4 transaction methods
IMgDalBase Name property
IMgDalBase<TDbContext> Context, MutextLock — typed access to DB context

Dependencies

  • Mango.Nop.Core (ProjectReference)
  • Nop.Core, Nop.Data (nopCommerce ProjectReferences)
  • Microsoft.AspNetCore.Mvc.NewtonsoftJson