一步一步学习ASP.NET MVC3 &EF Code First CTP 5&DI(二)

一,摘要

在上一篇文章(http://blog.csdn.net/suzhi921/archive/2011/02/16/6188768.aspx)中,我们讨论了如何应用MVC3以及Code First建立应用程序,以及应用域实体创建了CRUD的操作,在本篇文章我们将更进一步讨论领域实体,服务层,以及View Models,完成我们Web应用程序剩余的部分.使用的工具如下:

1.ASP.NET MVC 3
2.EF Code First CTP5
3.Unity2.0

二,创建Expense类的Repository

由于所有的CRUD操作封装在Base类里,所以只需继承基类就可以完成CRUD操作:
ExpenseRepository.cs:

   1: using System;
<!--CRLF-->
   2: using System.Collections.Generic;
<!--CRLF-->
   3: using System.Linq;
<!--CRLF-->
   4: using System.Text;
<!--CRLF-->
   5: using MyFinance.Domain;
<!--CRLF-->
   6: using MyFinance.Data.Infrastructure;
<!--CRLF-->
   7: 
<!--CRLF-->
   8: namespace MyFinance.Data
<!--CRLF-->
   9: {
<!--CRLF-->
  10:     public class ExpenseRepository : RepositoryBaseExpense>, IExpenseRepository
<!--CRLF-->
  11:         {
<!--CRLF-->
  12:         public ExpenseRepository(IDatabaseFactory databaseFactory)
<!--CRLF-->
  13:             : base(databaseFactory)
<!--CRLF-->
  14:             {
<!--CRLF-->
  15:             }           
<!--CRLF-->
  16:         }
<!--CRLF-->
  17:     public interface IExpenseRepository : IRepositoryExpense>
<!--CRLF-->
  18:     {
<!--CRLF-->
  19:     }
<!--CRLF-->
  20: }
<!--CRLF-->


三,建立服务层

由于控制器不适合进行大量的业务逻辑处理,所以服务层封装所有的业务逻辑,进行调用即可.下面创建Expense的服务层:

   1: using System;
<!--CRLF-->
   2: using System.Collections.Generic;
<!--CRLF-->
   3: using System.Linq;
<!--CRLF-->
   4: using System.Text;
<!--CRLF-->
   5: using MVC3DIApplication.Domain;
<!--CRLF-->
   6: using MVC3DIApplication.Data.Infrastructure;
<!--CRLF-->
   7: using MVC3DIApplication.Data;
<!--CRLF-->
   8: 
<!--CRLF-->
   9: namespace MVC3DIApplication.Service
<!--CRLF-->
  10: {
<!--CRLF-->
  11:     //接口
<!--CRLF-->
  12:      public interface IExpenseService
<!--CRLF-->
  13:     {
<!--CRLF-->
  14:         IEnumerable<expense> GetExpenses(DateTime startDate, DateTime ednDate);</expense>
<!--CRLF-->
  15:         Expense GetExpense(int id);        
<!--CRLF-->
  16:         void CreateExpense(Expense expense);
<!--CRLF-->
  17:         void DeleteExpense(int id);
<!--CRLF-->
  18:         void SaveExpense();
<!--CRLF-->
  19:     }
<!--CRLF-->
  20:     //实现接口
<!--CRLF-->
  21:     public class ExpenseService : IExpenseService
<!--CRLF-->
  22:     {
<!--CRLF-->
  23:         private readonly IExpenseRepository expenseRepository;       
<!--CRLF-->
  24:         private readonly IUnitOfWork unitOfWork;
<!--CRLF-->
  25:         public ExpenseService(IExpenseRepository expenseRepository, IUnitOfWork unitOfWork)
<!--CRLF-->
  26:         {         
<!--CRLF-->
  27:             this.expenseRepository = expenseRepository;
<!--CRLF-->
  28:             this.unitOfWork = unitOfWork;
<!--CRLF-->
  29:         }
<!--CRLF-->
  30:         public IEnumerable<expense> GetExpenses(DateTime startDate, DateTime endDate)</expense>
<!--CRLF-->
  31:         {
<!--CRLF-->
  32:             //由于进行了依赖注入,所以不需要手动new,直接使用上面expenseRepository调用即可;
<!--CRLF-->
  33:             var expenses = expenseRepository.GetMany(exp => exp.Date >= startDate && exp.Date 
<!--CRLF-->

    
  34:             return expenses;
<!--CRLF-->
  35:         }
<!--CRLF-->
  36:         public void CreateExpense(Expense expense)
<!--CRLF-->
  37:         {
<!--CRLF-->
  38:             expenseRepository.Add(expense);
<!--CRLF-->
  39:             unitOfWork.Commit();
<!--CRLF-->
  40:         }
<!--CRLF-->
  41:         public Expense GetExpense(int id)
<!--CRLF-->
  42:         {
<!--CRLF-->
  43:             var expense = expenseRepository.GetById(id);
<!--CRLF-->
  44:             return expense;
<!--CRLF-->
  45:         }
<!--CRLF-->
  46:         public void DeleteExpense(int id)
<!--CRLF-->
  47:         {
<!--CRLF-->
  48:             var expense = expenseRepository.GetById(id);
<!--CRLF-->
  49:             expenseRepository.Delete(expense);
<!--CRLF-->
  50:             unitOfWork.Commit();
<!--CRLF-->
  51:         }
<!--CRLF-->
  52:         public void SaveExpense()
<!--CRLF-->
  53:         {
<!--CRLF-->
  54:             unitOfWork.Commit();
<!--CRLF-->
  55:         }
<!--CRLF-->
  56:     }
<!--CRLF-->
  57: }
<!--CRLF-->
  58: 
<!--CRLF-->
  59: 
<!--CRLF-->

四,总结

通过这两篇文章我相信读者朋友能过掌握该结构的使用,由于时间关系我就要把要点写了下,源代码稍后以留言的形式提供,谢谢您的访问!

你可能感兴趣的:(asp.net)