Skip to main content

Data

These packages are designed to create a clean, reusable, and testable data access layer for your application.

RA.Utilities.Data.Entities:

This is the foundation. It provides common base classes for your data models (e.g., BaseEntity, AuditableBaseEntity). This ensures all your entities have a consistent structure with properties like Id, CreatedAt, and CreatedBy, reducing boilerplate code.

RA.Utilities.Data.Abstractions:

This package defines the "rules" or contracts for how you interact with your data, without specifying the technology. It contains interfaces like IRepository<T> and IUnitOfWork. Your application logic should depend on these abstractions, not on a specific database technology. This makes your code decoupled and easier to unit test.

RA.Utilities.Data.EntityFramework:

This package provides the concrete implementation of the rules defined in the abstractions package, specifically for Entity Framework Core. It contains ready-to-use classes like RepositoryBase<T> and UnitOfWork<TContext> that you can inherit from to quickly build your data access layer without writing all the CRUD (Create, Read, Update, Delete) logic yourself.

In short, they work together to enforce a clean architecture:

  1. Entities define your data structure.
  2. Abstractions define the contracts for accessing that data.
  3. EntityFramework provides a ready-made implementation of those contracts.