У меня есть проект WindowsForm С этим дизайном:
DAL (GenericRepository => UnitOfWork) => BLL (Служба) => UI
И используйте EntityFramWork, Интерфейс, GenericRepository, Внедрение зависимостей
Мой код в репозитории (DAL):
public class Repository : RepositoryBase, IDisposable, IRepository where T : class
{
private readonly DbSet dbSet;
private bool disposed = false;
public Repository(GlobalERPEntities dbContext)
{
DBContext = dbContext;
dbSet = DBContext.Set();
}
public virtual IEnumerable GetAll()
{
return dbSet.ToList();
}
}
UnitOfWork (DAL):
public class UnitOfWork : RepositoryBase, IUnitOfWork, IDisposable
{
private Dictionaryobject> repositories;
private bool disposed = false;
public UnitOfWork(GlobalERPEntities dbContext)
{
DBContext = dbContext;
}
public IRepository Repository() where T : class
{
if (repositories == null)
{
repositories = new Dictionaryobject>();
}
if (repositories.Keys.Contains(typeof(T)) == true)
{
return repositories[typeof(T)] as Repository;
}
Repository repo = new Repository(DBContext);
repositories.Add(typeof(T), repo);
return repo;
}
Сервис (BLL):
public class Service_HR_Person : IService_HR_Person , IDisposable
{
private readonly IUnitOfWork UnitOfWork;
public Service_HR_Person(IUnitOfWork unitOfWork)
{
UnitOfWork = unitOfWork;
}
public virtual IEnumerable GetAll()
{
return UnitOfWork.Repository().GetAll().ToList();
}
MyForm (UI):
using (Service_HR_Person srvPerson = new Service_HR_Person())
{
srvPerson.Delete(base.rowid);
try
{
srvPerson.Save();
MessageManager.Show(Enums.MessageBoxType.InformationTransactionSuccessfully);
}
catch (Exception ex)
{
MessageManager.Show(ErrorManager.ProccessException(ex), Enums.MessageBoxType.Error);
}
}
Я знаю, что не следует использовать слой DAL на уровне пользовательского интерфейса, а BLL находится между DAL и UI
но у меня есть ошибка в пользовательском интерфейсе
using (Service_HR_Person srvPerson = new Service_HR_Person())
"new Service_HR_Person ()", скажем, нужен аргумент в (), который является unitofwork, но мы не должны использовать unitofwork в UI
Я прочитал статью и пример, в которых используются IOC, ninject, bootstraper и ... но я не могу написать настоящий код
Как использовать Ninject или IOC?
пожалуйста, помогите мне с кодом
* 1026 большое спасибо *