Мы используем EF6 в нашем приложении MVC 4, поэтому мы создали абстрактный класс для бизнес-объектов
Итак, у нас есть следующий общий абстрактный класс:
public abstract class Repository<TEntity, TIdentifier> : IRepository<TEntity, TIdentifier> where TEntity : class { ... }
в нашем приложении BusinessLayer
у нас есть несколько классов (по одному классу на сущность), которые реализуют вышеуказанный класс.
например: как показано ниже
//Authorization is an entity here
public class AuthorizationBusinessObject : MD.EntityFramework.Repository.Repository<Authorization, int>
{
...
}
Нам нужно иметь BaseBusinessObject
для вышеуказанных классов.
Теперь мой вопрос здесь; как мы можем иметь класс BaseBusinessObject
для вышеуказанных классов?
Изменить:
Ну, Repository<>
— это базовый класс для BusinessObjects
, не так ли?
На самом деле нам нужен не универсальный базовый класс для BusinessObjects
Почему?
Мы используем службы веб-API в нашем MVC 4. заявление. в каждом контроллере веб-API у нас должны быть те же действия, что и следующие, только BusinessObject
отличается. Итак, если бы у нас был базовый бизнес-объект, мы могли бы реализовать следующие действия в базовом контроллере веб-API.
// Setting is an Entity
private readonly SettingBusinessObject _settingBusinessObject;
public SettingController()
{
_settingBusinessObject = new SettingBusinessObject(Entities);
}
public Setting Get(int id)
{
return _settingBusinessObject.SelectBy(id);
}
public List<Setting> Get(IEnumerable<int> ids)
{
return _settingBusinessObject.SelectAll(ids).ToList();
}
public Setting Put(Setting setting)
{
return _settingBusinessObject.Update(setting);
}
public List<Setting> Put(List<Setting> entities)
{
List<Setting> userList = new List<Setting>();
userList.AddRange(entities.Select(_settingBusinessObject.Update));
return userList;
}
public Setting Post(Setting entity)
{
return _settingBusinessObject.Insert(entity);
}
public List<Setting> Post(List<Setting> entities)
{
List<Setting> userList = new List<Setting>();
userList.AddRange(entities.Select(_settingBusinessObject.Insert));
return userList;
}
public void Delete(int id)
{
_settingBusinessObject.Delete(id);
}
public void Delete(List<int> ids)
{
_settingBusinessObject.Delete(ids);
}
Repository<TEntity, TIdentifier>
по отношению к классуAuthorizationBusinessObject
, если он уже не является базой для этогоclass
? - person Mike Perrenoud   schedule 29.11.2013