MVC-Service、IService
这次记录的是MVC的服务层和接口层,分别建命名为MyWeb.IService和MyWeb.Service两个类库。
IService接口
IService层主要是接口,新建一个接口IUserServie,里面是一个异步登录的方法。
1 public interface IUserService 2 { 3 Task<ExecutedResult<User>> Login(string userName, string password); 4 }
同步登录的方法
1 ExecutedResult<User> Login(string userName, string password);
Service服务
新建一个名为Repository的类,继承DBUtility的EFRepository<MyWebDbContext>
1 public class Repository : EFRepository<MyWebDbContext> 2 { 3 public MyWebDbContext DB 4 { 5 get 6 { 7 return this.DbContext; 8 } 9 } 10 }
接下来就是具体的服务,新建一个UserService,继承IUserService,实现用户登录的方法
1 public async Task<ExecutedResult<User>> Login(string userName, string password) 2 { 3 using (Repository db = new Repository()) 4 { 5 ExecutedResult<User> result = new ExecutedResult<User>(); 6 try 7 { 8 var tempUser = await db.Get<User>(x => x.UserName == userName && x.Password == password).FirstOrDefaultAsync(); 9 //同步,将上面改为 10 //var tempUser = db.Get<User>(x => x.UserName == userName && x.Password == password).FirstOrDefault(); 11 if (tempUser != null) 12 { 13 result.Result = tempUser; 14 } 15 else 16 { 17 result.Result = null; 18 result.Message = "用户不存在!"; 19 } 20 } 21 catch (Exception ex) 22 { 23 result.Exception = ex; 24 result.Result = null; 25 } 26 27 return result; 28 } 29 }
ExecutedResult是一个执行结果类,用于规范方法的返回结果
1 public class ExecutedResult<T> 2 { 3 public ExecutedResult() 4 { 5 this.Errors = new List<string>(); 6 } 7 8 /// <summary> 9 /// 是否有错,如果Exception不为空,则为true(有错误),否则,为false 10 /// </summary> 11 public bool HasError { get { return this.Exception != null; } } 12 13 /// <summary> 14 /// 返回一些信息,可以是查询结果信息,可以是提示信息 15 /// </summary> 16 public string Message { get; set; } 17 18 /// <summary> 19 /// 异常错误 20 /// </summary> 21 public Exception Exception { get; set; } 22 23 /// <summary> 24 /// 对返回结果的描述 25 /// </summary> 26 public string Description { get; set; } 27 28 /// <summary> 29 /// 返回的结果,泛型 30 /// </summary> 31 public T Result { get; set; } 32 33 /// <summary> 34 /// 标签,可以为任意类型 35 /// </summary> 36 public object Tag { get; set; } 37 38 /// <summary> 39 /// 编号 40 /// </summary> 41 public string Code { get; set; } 42 43 /// <summary> 44 /// 错误信息集合 45 /// </summary> 46 public ICollection<string> Errors { get; set; } 47 }
数据层已经完了,接下来是业务层,还在一点点研究和实验中,希望能早点完~