使用EF(首先使用EF框架代码)和统一(依赖项注入)和工作单位的存储库PATERN。我有两个上下文,但我想根据请求的一个上下文。这样的东西:
public bool Save(User user, RequestTyoe request)
{
//在这里应用一些模式来决定请求上下文 使用
AbstracRepository.Add(user);
AbstracRepository.UnitOfWork.Commit();
}
任何建议??
PD:我真的不知道什么模式使用...
谢谢
如果您通用存储库和不同的上下文,则可以指定要通过的上下文类型。
public abstract class GenericRepository<C, T> :
IGenericRepository<T> where T : class where C : DbContext, new()
您可以使用CastleWindsor轻松注册多个服务:http://docs.castleproject.org/default.aspx?page=mainpage&ns = windsor&amp; asspxautodetectectectectectectectectectecteectcookiesupport=1
nuget:http://www.nuget.org/packages/castle.windsor
public class UserServiceInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<IUserService1>()
.ImplementedBy<UserService1>()
.LifestyleTransient());
container.Register(Component.For<IUserService2>()
.ImplementedBy<UserService2>()
.LifestyleTransient());
}
}
然后,在您的控制器中,您可以在构造函数中使用服务,并且可以随心所欲。
public class MyController : Controller
{
private IUserService1 _userService1;
private IUserService2 _userService2;
public MyController(IUserService1 userService1, IUserService2 userService2)
{
_userService1 = userService1;
_userService2 = userService2;
}
}