我们在MVC 4应用程序中使用EF6,因此我们为Business Objects创建了一个抽象类
所以,我们有一个通用的抽象类如下:
public abstract class Repository: IRepository where TEntity : class { ... }
在我们的应用程序中,BusinessLayer
我们有几个类(每个实体一个类)实现上面的类.
例如:如下
//Authorization is an entity here public class AuthorizationBusinessObject : MD.EntityFramework.Repository.Repository{ ... }
我们需要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 ListGet(IEnumerable ids) { return _settingBusinessObject.SelectAll(ids).ToList(); } public Setting Put(Setting setting) { return _settingBusinessObject.Update(setting); } public List Put(List entities) { List userList = new List (); userList.AddRange(entities.Select(_settingBusinessObject.Update)); return userList; } public Setting Post(Setting entity) { return _settingBusinessObject.Insert(entity); } public List Post(List entities) { List userList = new List (); userList.AddRange(entities.Select(_settingBusinessObject.Insert)); return userList; } public void Delete(int id) { _settingBusinessObject.Delete(id); } public void Delete(List ids) { _settingBusinessObject.Delete(ids); }
ChaseMedalli.. 6
为什么BaseBusinessObject类也不能通用?
public abstract class BaseBusinessObject: Repository { ... base stuff here } public class AuthorizationBusinessObject : BaseBusinessObject { }
值得注意的是,在EF之上分层大量的每个实体的东西可以增加大量的样板,几乎没有什么实际好处.考虑是否直接使用EF可以获得您所需要的内容,或者您的业务对象类是应该围绕逻辑操作集而不是围绕单个实体进行组织,这可能会很糟糕.
为什么BaseBusinessObject类也不能通用?
public abstract class BaseBusinessObject<TEntity, TIdentifier> : Repository<TEntity, TIdentifier> { ... base stuff here } public class AuthorizationBusinessObject : BaseBusinessObject<Authorization, int> { }
值得注意的是,在EF之上分层大量的每个实体的东西可以增加大量的样板,几乎没有什么实际好处.考虑是否直接使用EF可以获得您所需要的内容,或者您的业务对象类是应该围绕逻辑操作集而不是围绕单个实体进行组织,这可能会很糟糕.