快速业务通道

微型项目实践(8):数据访问的实现

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
ing.IsNullOrEmpty(connectionString))  58:         throw new ArgumentNullException("connectionString");  59:   60:       return new Database(connectionString, getMappingSource());  61:     }  62:   63:     #endregion  64:   65:     #region IDatabase Members  66:   67:     /// <summary>  68:     /// 函誼蝶匯倖糞悶議方象恵諒  69:     /// </summary>  70:     /// <typeparam name="T">糞悶窃侏</typeparam>  71:     /// <returns>乎糞悶議方象恵諒</returns>  72:     public IEntityDataAccess<T> GetDataAccess<T>() where T : class  73:     {  74:       return new EntityDataAccessAdapter<T>(this);  75:     }  76:   77:     /// <summary>  78:     /// 戻住方象垂延厚  79:     /// </summary>  80:     public void Submit()  81:     {  82:       base.SubmitChanges();  83:     }  84:   85:     #endregion  86:   87:     #region Blogs  88:   89:     public IEntityDataAccess<Blog> Blogs  90:     {  91:       get { return new EntityDataAccessAdapter<Blog>(this); }  92:     }  93:   94:     public IEntityDataAccess<BlogClass> BlogClasses  95:     {  96:       get { return new EntityDataAccessAdapter<BlogClass>(this); }  97:     }  98:   99:     #endregion 100:   } 101: }

这个代码比较长,我们可以把它分为三部分来看,第一部分是实现了一个Singelton模式,用于构造 Linq的外部映射文件,涉及的代码如下:

1:  //定义内嵌XML映射资源文件的位置
2: private const string MAPPING_SOURCE_RESOURCE_NAME = "DongBlog.DataAccess.MappingSource.Xml";
3: //定义XML映射源
4: private static MappingSource _MappingSource;
5: //定义锁
6: private static object _Locker = new object();
7:
8: //私有的构造函数
9: private Database(string connectionString, MappingSource mappingSource)
10: : base(connectionString, mappingSource) { }
11:
12: //构造Linq映射源
13: private static MappingSource getMappingSource()
14: {
15: if (_MappingSource == null)
16: {
17: lock (_Locker)
18: {
19: if (_MappingSource == null)
20: {
21: Stream mapingSourceStream = Assembly.GetAssembly(typeof(Database))
.GetManifestResourceStream(MAPPING_SOURCE_RESOURCE_NAME);
22: if (mapingSourceStream == null)
23: throw new System.IO
.InvalidDataException( "映射文件不存在 !您确定已经将其编译属性设置为\"嵌入资源(Embedded Resource)\"?");
24: _MappingSource = XmlMappingSource.FromStream(mapingSourceStream);
25: }
26: }
27: }
28: return _MappingSource;
29: }
30:
31: /// <summary>
3

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号