是的-我相信这是可能的。
(请输入密码!)很高兴你问:)
public interface IOrderRepository
{
IQueryable<Order> FindAll();
}
public interface IOperationLogRepository
{
IQueryable<OperationLog> FindAll();
}
public interface IUnitOfWork
{
void Commit();
}
.
public class SqlServerContext : ObjectContext, IUnitOfWork
{
public void SqlServerContext(string connectionString)
: base(connectionString)
{
}
public void Commit()
{
this.SaveChanges();
}
// Your other POCO's and stuff here ..etc..
}
.
public class OrderRepostiory : IOrderRepository
{
private readonly SqlServerContext _sqlServerContext;
public void OrderRepostiory(SqlServerContext sqlServerContext)
{
_sqlServerContext = sqlServerContext;
}
public IQueryable<Order> FindAll()
{
_sqlServerContext.Orders;
}
}
public class SqlServerRegistry : Registry
{
public SqlServerRegistry(string connectionString)
{
For<SqlServerContext>()
.HybridHttpOrThreadLocalScoped()
.Use<SqlServerContext>()
.Ctor<string>("connectionString")
.Is(connectionString);
For<IOrderRepository>().Use<OrderRepository>();
For<IOperationLogRepository>().Use<OperationLogRepository>();
}
}
重复使用
在多个存储库中。
不知道或不理解DI/IoC?
那么这也可以。。。。
private SqlServerContext _sqlServerContext;
private IOrderRepository _orderRepository;
private IOperationLogRepository _operationLogRepository;
[TestInitialize]
public void TestInitialise()
{
_sqlServerContext = new SqlServerContext(
ConfigurationManager.AppSettings["connectionString"]);
_orderRepository = new OrderRepository(_sqlServerContext);
_operationLogRepository= new OperationLogRepository(_sqlServerContext);
}
[TestMethod]
public void SomeTest()
{
// Arrange.
const int count = 10;
// Act.
var orders = _orderRepository.FindAll().Take(10).ToArray();
// Assert.
Assert.IsNotNull(orders);
CollectionAssert.AllItemsAreNotNull(orders);
Assert.AreEqual(count, orders.Length);
}
再一次,这些都是我刚输入的未经测试的代码,因为我正在考虑回答这个问题。
嗯。