AspnetCore.Data
3.1.1
Implements patterns UnitOfWork and Repository.
Install-Package AspnetCore.Data -Version 3.1.1
dotnet add package AspnetCore.Data --version 3.1.1
<PackageReference Include="AspnetCore.Data" Version="3.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AspnetCore.Data --version 3.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: AspnetCore.Data, 3.1.1"
For F# scripts that support #r syntax, copy this into the source code to reference the package.
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
//other configurations...
services.AddScoped<IUnityContainer, UnityContainer>();
var container = services.BuildServiceProvider().GetService<IUnityContainer>();
container.RegisterType<ICategoryRepository, CategoryRepository>();
container.RegisterType<IOrderRepository, OrderRepository>();
container.RegisterType<ICustomerRepository, CustomerRepository>();
services.AddScoped<IUnitOfWork>(o => new UnitOfWork<NORTHWNDContext>(container));
}
HomeController.cs
public class BaseController : Controller
{
public IUnitOfWork _uow;
public BaseController(IUnitOfWork uow)
{
_uow = uow;
}
}
public class HomeController : BaseController
{
private IOrderRepository _ordersRepo;
private ICustomerRepository _custRepo;
private ICategoryRepository _categRepo;
public HomeController(IUnitOfWork uow) : base(uow)
{
_ordersRepo = uow.Get<IOrderRepository>();
_custRepo = uow.Get<ICustomerRepository>();
_categRepo = uow.Get<ICategoryRepository>();
}
public void Demo()
{
//add
_categRepo.Add(new Categories { CategoryName = "test", Description = "none" });
//get
var cust = _custRepo.Get(c => c.CustomerId == "ALFKI");
//update
cust.Address = "Test address";
_custRepo.Update(cust);
//delete
var categ = _categRepo.Get(c => c.CategoryId == 2);
_categRepo.Remove(categ);
_uow.Commit();
}
public void Demo2()
{
var categoreis = _categRepo.GetCategories();
var orders = _ordersRepo.GetOrders();
var cusomters = _custRepo.GetCustomers();
var customer = _custRepo.GetCustomer("ALFKI");
}
}
Repositories
public interface ICategoryRepository : IDataRepository<Categories>
{
IEnumerable<Categories> GetCategories();
}
public class CategoryRepository : DataRepository<Categories>, ICategoryRepository
{
public CategoryRepository(DbContext dbContext) : base(dbContext)
{
}
public IEnumerable<Categories> GetCategories()
{
return base.SqlQuery<Categories>("select * from categories").ToList();
}
}
public interface IOrderRepository : IDataRepository<Orders>
{
IEnumerable<Orders> GetOrders();
}
public class OrderRepository : DataRepository<Orders>, IOrderRepository
{
public OrderRepository(DbContext dbContext) : base(dbContext)
{
}
public IEnumerable<Orders> GetOrders()
{
return base.SqlQuery<Orders>("select * from Orders").ToList();
}
}
public interface ICustomerRepository : IDataRepository<Customers>
{
IEnumerable<Customers> GetCustomers();
Customers GetCustomer(string customerId);
}
public class CustomerRepository : DataRepository<Customers>, ICustomerRepository
{
public CustomerRepository(DbContext dbContext) : base(dbContext)
{
}
public Customers GetCustomer(string customerId)
{
var (cust,outParams) = base.SqlQuery2<Customers>("spGetCustomersById", true, new { CustomerId = customerId }, new { TotalRows = 0 });
var count = outParams.Get<int>("TotalRows");
return cust.FirstOrDefault();
}
public IEnumerable<Customers> GetCustomers()
{
return base.SqlQuery<Customers>("spGetCustomers",true).ToList();
}
}
SQL scripts sample
//
create proc spGetCustomersById
@CustomerId varchar(20),
@TotalRows int out
as
begin
select * from Customers where CustomerID = @CustomerId
select @TotalRows = count(1) from Customers where CustomerID = @CustomerId
end
//
create proc spGetCustomers
as
begin
select * from Customers
end
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
//other configurations...
services.AddScoped<IUnityContainer, UnityContainer>();
var container = services.BuildServiceProvider().GetService<IUnityContainer>();
container.RegisterType<ICategoryRepository, CategoryRepository>();
container.RegisterType<IOrderRepository, OrderRepository>();
container.RegisterType<ICustomerRepository, CustomerRepository>();
services.AddScoped<IUnitOfWork>(o => new UnitOfWork<NORTHWNDContext>(container));
}
HomeController.cs
public class BaseController : Controller
{
public IUnitOfWork _uow;
public BaseController(IUnitOfWork uow)
{
_uow = uow;
}
}
public class HomeController : BaseController
{
private IOrderRepository _ordersRepo;
private ICustomerRepository _custRepo;
private ICategoryRepository _categRepo;
public HomeController(IUnitOfWork uow) : base(uow)
{
_ordersRepo = uow.Get<IOrderRepository>();
_custRepo = uow.Get<ICustomerRepository>();
_categRepo = uow.Get<ICategoryRepository>();
}
public void Demo()
{
//add
_categRepo.Add(new Categories { CategoryName = "test", Description = "none" });
//get
var cust = _custRepo.Get(c => c.CustomerId == "ALFKI");
//update
cust.Address = "Test address";
_custRepo.Update(cust);
//delete
var categ = _categRepo.Get(c => c.CategoryId == 2);
_categRepo.Remove(categ);
_uow.Commit();
}
public void Demo2()
{
var categoreis = _categRepo.GetCategories();
var orders = _ordersRepo.GetOrders();
var cusomters = _custRepo.GetCustomers();
var customer = _custRepo.GetCustomer("ALFKI");
}
}
Repositories
public interface ICategoryRepository : IDataRepository<Categories>
{
IEnumerable<Categories> GetCategories();
}
public class CategoryRepository : DataRepository<Categories>, ICategoryRepository
{
public CategoryRepository(DbContext dbContext) : base(dbContext)
{
}
public IEnumerable<Categories> GetCategories()
{
return base.SqlQuery<Categories>("select * from categories").ToList();
}
}
public interface IOrderRepository : IDataRepository<Orders>
{
IEnumerable<Orders> GetOrders();
}
public class OrderRepository : DataRepository<Orders>, IOrderRepository
{
public OrderRepository(DbContext dbContext) : base(dbContext)
{
}
public IEnumerable<Orders> GetOrders()
{
return base.SqlQuery<Orders>("select * from Orders").ToList();
}
}
public interface ICustomerRepository : IDataRepository<Customers>
{
IEnumerable<Customers> GetCustomers();
Customers GetCustomer(string customerId);
}
public class CustomerRepository : DataRepository<Customers>, ICustomerRepository
{
public CustomerRepository(DbContext dbContext) : base(dbContext)
{
}
public Customers GetCustomer(string customerId)
{
var (cust,outParams) = base.SqlQuery2<Customers>("spGetCustomersById", true, new { CustomerId = customerId }, new { TotalRows = 0 });
var count = outParams.Get<int>("TotalRows");
return cust.FirstOrDefault();
}
public IEnumerable<Customers> GetCustomers()
{
return base.SqlQuery<Customers>("spGetCustomers",true).ToList();
}
}
SQL scripts sample
//
create proc spGetCustomersById
@CustomerId varchar(20),
@TotalRows int out
as
begin
select * from Customers where CustomerID = @CustomerId
select @TotalRows = count(1) from Customers where CustomerID = @CustomerId
end
//
create proc spGetCustomers
as
begin
select * from Customers
end
Dependencies
-
.NETCoreApp 3.1
- AspnetCore.Data.Contract (>= 3.1.1)
- Dapper (>= 2.0.30)
- Microsoft.EntityFrameworkCore.SqlServer (>= 3.1.2)
- Unity.NetCore (>= 4.0.3)
Used By
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.