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层的方法!,如需转载请自行联系原博主。

目录
相关文章
|
7月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
517 18
|
7月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
193 9
|
8月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
274 12
|
8月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
11月前
|
SQL 安全 数据库
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
651 77
|
11月前
|
SQL 安全 数据库连接
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
281 73
|
9月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
216 16
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
489 71
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
624 4
|
SQL BI 数据库
SQL操作的一些基本方法
【10月更文挑战第27天】SQL操作的一些基本方法
183 3