当前位置: 网学 > 编程文档 > 其他类别 > 正文

从业务域驱动开发看三层架构够不够?

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/12
iew raw gistfile1.cs This Gist brought to you by GitHub.

注意到:

1. 接口命名,我没有加I,这是特意的。

2. 用到了Query<>接口, 这个是对查询的一个抽象。好处是,不需要像大多数的仓储实现,要为每个类建立一个仓储接口,膨胀的很厉害。

Quer接口很简单,没有任何方法和属性,只是为了使用强类型。它的实现类会根据需要, 越来越多。 因为,查询几乎就是数据层的主要功能。

查询接口的定义:

  1. namespace Skight.Demo.Domain  
  2. {  
  3. public interface Query<Item>{}  

view raw gistfile1.txt This Gist brought to you by GitHub.

持久层 (数据层)

考试映射类:

  1. using FluentNHibernate.Mapping;  
  2. using Skight.Demo.Domain.Examination;   
  3. namespace Skight.Demo.NHRepository{  
  4. public class ExamMap:ClassMap<Exam>{  
  5. public ExamMap(){Id(x => x.Id);Map(x => x.Code);  
  6. Map(x => x.Name);}}} 

view raw gistfile1.cs This Gist brought to you by GitHub.

Fluent nHibernate对仓储接口的实现:

  1. using System;using System.IO;  
  2. using System.Reflection;  
  3. using FluentNHibernate.Cfg;  
  4. using FluentNHibernate.Cfg.Db;  
  5. using NHibernate;using NHibernate.Cfg;  
  6. using NHibernate.Tool.hbm2ddl;  
  7. namespace Skight.Demo.NHRepository{      
  8. public class SessionProvider      
  9. {         
  10.  #region Instance for use outside          
  11. private static SessionProvider instance;          
  12. public static SessionProvider Instance {             
  13.  get            {                 
  14.  if (instance == null)                  
  15. {                     
  16.  instance = new SessionProvider();          
  17.         }                  
  18. return instance;            
  19.   }        }       
  20.    #endregion        
  21.   #region Set up database       
  22.    private const string DBFile = "SkightDemo.db";     
  23.      public bool IsBuildScheme { getset; }     
  24.      public void initilize()      
  25.     {                       session_factory = Fluently.Configure()            
  26.       .Database(SQLiteConfiguration.Standard.UsingFile(DBFile).ShowSql())           
  27.        .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))          
  28.       .ExposeConfiguration(c => c.SetProperty("current_session_context_class""thread_static"))         
  29.        .ExposeConfiguration(build_schema)              
  30.     .BuildSessionFactory();        }      
  31.     private void build_schema(Configuration configuration)      
  32.     {            if (IsBuildScheme)        
  33.       {                new SchemaExport(configuration)           
  34.            .Execute(truetruefalse);            
  35.   }        }        #endregion       
  36.    private readonly object lock_flag = new object();     
  37.      private ISessionFactory session_factory;       
  38.    public ISessionFactory SessionFactory {           
  39.    get {                 
  40.  if (session_factory == null) {       
  41.                lock (lock_flag) {                        
  42.  
  43.   if (session_factory == null) {                         
  44.      initilize();                       
  45.    }                    }               
  46.    }                
  47.   return session_factory;         
  48.      }        }          
  49. public ISession CreateSession() {         
  50.      ISession session = SessionFactory.OpenSession();           
  51.    return session;        
  52.   }          
  53. public ISession CurrentSession      
  54.     {          
  55.     get { return SessionFactory.GetCurrentSession(); }      
  56.     }     
  57.  }} 

v

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号