LINQ TO SQL的ORM模型构架,实现DATA层的方法!

简介:
#region 简单数据层代码,足可以说明面向接口的编程思想,一种思想的提高才是真正的提升  
    /// <summary>  
    /// 简单数据工厂  
    /// </summary>  
    internal class Factory  
    {  
        volatile static Dictionary<Thread, DataContext[]> divDataContext = new Dictionary<Thread, DataContext[]>();  
        static System.Timers.Timer t = new System.Timers.Timer(1000);  
        static Factory()  
        {  
            t.AutoReset = true;  
            t.Enabled = true;  
            t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);  
            t.Start();  
        }  
        static void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)  
        {  

            List<Thread> list = new List<Thread>();  
            list.AddRange(divDataContext.Keys.Where(i => i.ThreadState == ThreadState.Stopped));  
            for (int index = 0; index < list.Count; index++)  
            {  
                for (int refer = 0; refer < divDataContext[list[index]].Length; refer++)  
                {  
                    if (divDataContext[list[index]][refer] != null)  
                    {  
                        divDataContext[list[index]][refer].Dispose();  
                        divDataContext[list[index]][refer] = null;  
                    }  
                }  
                divDataContext.Remove(list[index]);  
                list[index] = null;  
            }  
            list = null;  
        }  
        internal static DataContext CreateDb(string dbName)  
        {  
            return CreateDb(dbName, Thread.CurrentThread);  
        }  

        internal static DataContext CreateDb(string dbName, Thread thread)  
        {  
            if (!divDataContext.Keys.Contains(thread)) //如果不包含当前线程,就创建一个  
            {  
                divDataContext.Add(thread, new DataContext[1]);  
            }  

            if (dbName.Equals("lawyer"))  
            {  
                if (divDataContext[thread][0] == null)  
                {  
                    divDataContext[thread][0] = new DataClasses1DataContext();  
                }  
                return divDataContext[thread][0];  
            }  

            return null;  
        }  
    }  
    /// <summary>  
    /// 简单数据基类  
    /// </summary>  
    public abstract class DbBase  
    {  
        protected DataClasses1DataContext db = (DataClasses1DataContext)Factory.CreateDb("lawyer");  
    }  

    /// <summary>  
    /// 简单数据实体接口  
    /// </summary>  
    public interface IDataEntity  
    {  

    }  
    /// <summary>  
    /// 简单数据操作通用方法  
    /// </summary>  
    public interface IRepository  
    {  
        void insert(IDataEntity entity);  

    }  
    #endregion  

    #region 具体规范与实现  

    /// <summary>  
    /// 简单数据操作规范  
    /// </summary>  
    public interface IUsersRepository : IRepository  
    {  
        //自己的私有规范  
        IQueryable<Users> GetDetails();  
    }  
    /// <summary>  
    /// 简单数据操作对象  
    /// </summary>  
    public class UsersRepository : DbBase, IUsersRepository  
    {  

        #region IUsers 成员  

        public IQueryable<Users> GetDetails()  
        {  
            return base.db.Users;  
        }  

        #endregion  

        #region IRepository 成员  

        public void insert(IDataEntity entity)  
        {  
            throw new NotImplementedException();  
        }  

        #endregion  
    }  


    public interface IRole_UsersRepository : IRepository  
    {  
        IQueryable<Role_Users> GetDetails();  
    }  
    public class Role_UsersRepository : DbBase, IRole_UsersRepository  
    {  
        #region IRole_UsersRepository 成员  

        public IQueryable<Role_Users> GetDetails()  
        {  
            return base.db.Role_Users;  
        }  

        #endregion  

        #region IRepository 成员  

        public void insert(IDataEntity entity)  
        {  
            throw new NotImplementedException();  
        }  

        #endregion  
    }  

    #endregion

本文转自博客园张占岭(仓储大叔)的博客,原文链接:LINQ TO SQL的ORM模型构架,实现DATA层的方法!,如需转载请自行联系原博主。

目录
相关文章
|
20天前
|
SQL BI 数据库
SQL操作的一些基本方法
【10月更文挑战第27天】SQL操作的一些基本方法
31 3
|
20天前
|
SQL 监控 固态存储
SQL优化有哪些方法?
【10月更文挑战第27天】SQL优化有哪些方法?
15 3
|
1月前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
1月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
1月前
|
SQL 存储 Serverless
SQL语句拆分时间字段的技巧与方法
在数据库操作中,经常需要处理时间数据
|
1月前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
1月前
|
SQL 安全 关系型数据库
SQL语句中表名通配符的使用技巧与方法
在SQL查询中,通配符通常用于匹配字符串数据,如列值中的部分字符
|
1月前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
1月前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
1月前
|
SQL 监控 数据库
SQL语句性能分析技巧与方法
在数据库管理中,分析SQL语句的性能是优化数据库查询、提升系统响应速度的重要步骤