2
n层实体框架解决方案的依赖注入
我当前正在设计一个使用实体框架5(.net 4)作为其数据访问策略的n层解决方案,但是我担心如何合并依赖项注入以使其可测试/灵活。 我当前的解决方案布局如下(我的解决方案称为Alcatraz): Alcatraz.WebUI:一个asp.net Webform项目(前端用户界面)引用项目Alcatraz.Business和Alcatraz.Data.Models。 Alcatraz.Business:一个类库项目,包含业务逻辑,引用项目Alcatraz.Data.Access,Alcatraz.Data.Models Alcatraz.Data.Access:一个类库项目,包含AlcatrazModel.edmx和AlcatrazEntitiesDbContext,引用项目Alcatraz.Data.Models。 Alcatraz.Data.Models:一个类库项目,包含Alcatraz模型的POCO,无引用。 我对这个解决方案如何工作的愿景是,Web-ui将实例化业务库中的存储库,该存储库将具有(通过构造函数)连接字符串(而不是AlcatrazEntities实例)的依赖项。Web用户界面会知道数据库连接字符串,但不知道它是一个实体框架连接字符串。 在业务项目中: public class InmateRepository : IInmateRepository { private string _connectionString; public InmateRepository(string connectionString) { if (connectionString == null) { throw new ArgumentNullException("connectionString"); } EntityConnectionStringBuilder connectionBuilder = new EntityConnectionStringBuilder(); connectionBuilder.Metadata = "res://*/AlcatrazModel.csdl|res://*/AlcatrazModel.ssdl|res://*/AlcatrazModel.msl"; connectionBuilder.Provider = "System.Data.SqlClient"; connectionBuilder.ProviderConnectionString = connectionString; _connectionString = connectionBuilder.ToString(); } …