ANSI_NULLS QUOTED_IDENTIFIER .( , (50) NOT NULL, (200) NULL, , ( ), IGNORE_DUP_KEY , ALLOW_PAGE_LOCKS )
View Code2. 添加实体类和映射。在Domain项目下面新建Test目录,添加TestEntity。Data项目Mapping下新建Test目录,添加EF映射类。
public class TestEntity: BaseEntity { Name { get; set; } Description { get; set; } public virtual DateTime? CreateDate { get; set; } }
View Code
public class TestEntityMap : NopEntityTypeConfiguration<TestEntity> { public TestEntityMap() { ); this.HasKey(t => t.Id); this.Property(t => t.Name).IsRequired().HasMaxLength(50); } }
View Code3. 添加业务层方法。
在Nop.Services项目里,在我们之前添加的接口和类下面添加几个常用的CURD方法,并实现它。这样我们就已经实现的业务层的代码了。
Test service interface ITestService { Gets all tests IList<TestEntity> GetAllTests(); Gets a test TestEntity GetTestById(int testId); Inserts a test InsertTest(TestEntity test); Updates the test UpdateTest(TestEntity test); Deletes a test DeleteTest(TestEntity test); }
View Code
Test service TestService : ITestService { #region Constants #endregion #region Fields private readonly IRepository<TestEntity> _testRepository; #endregion #region Ctor public TestService(IRepository<TestEntity> testRepository) { this._testRepository = testRepository; } #endregion #region Methods Gets all tests IList<TestEntity> GetAllTests() { return _testRepository.Table.Where(p => p.Name != null).ToList(); } Gets a topic TestEntity GetTestById(int testId) { if (testId == 0) return null; return _testRepository.GetById(testId); } Inserts a test InsertTest(TestEntity test) { if (test == null) ); _testRepository.Insert(test); } Updates the test UpdateTest(TestEntity test) { if (test == null) ); _testRepository.Update(test); } Deletes a test DeleteTest(TestEntity test) { if (test == null) ); _testRepository.Delete(test); } #endregion }
View Code 四、添加Presentation项目有了业务服务,现在可以添加表现层项目来测试了。为什么不直接写测试项目?因为测试项目使用Mock模拟数据,不能完整展示整个功能。
1. 添加mvc模板项目,通过nuget引入Autofac和Autofac.Mvc5。
2. 添加容器注册类DependencyRegistrar,实现IDependencyRegistrar接口,这一步非常关键,我们将要用的接口和实现类注入到容器中。