我们在MVC 4应用程序中使用EF6,因此我们为Business Objects创建了一个抽象类
所以,我们有一个通用的抽象类如下:
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
的非通用基类
为什么呢?
我们在MVC 4应用程序中使用Web API服务。在每个web api控制器中,我们必须执行与以下相同的操作,只有BusinessObject
不同。因此,如果我们可以拥有一个基本业务对象,我们可以在基本web 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);
}
答案 0 :(得分:6)
为什么BaseBusinessObject类也不能通用?
public abstract class BaseBusinessObject<TEntity, TIdentifier> : Repository<TEntity, TIdentifier>
{
... base stuff here
}
public class AuthorizationBusinessObject : BaseBusinessObject<Authorization, int>
{
}
值得注意的是,在EF之上分层大量的每个实体的东西可以增加大量的样板,几乎没有真正的好处。考虑是否直接使用EF可以获得您所需要的内容,或者您的业务对象类是应该围绕逻辑操作集而不是围绕单个实体进行组织,这可能是一件很糟糕的事。