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

目录
相关文章
|
3天前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
1天前
|
SQL Java 关系型数据库
实时计算 Flink版操作报错合集之通过flink sql形式同步数据到hudi中,本地启动mian方法报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
19 8
|
5天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
5天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
5天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
5天前
|
SQL 数据库
常见寻找 SQL 注入方法总结
常见寻找 SQL 注入方法总结
|
5天前
|
SQL 数据库
常用SQL查询方法与实例
常用SQL查询方法与实例
37 0
|
5天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
103490 1
|
5天前
|
SQL Oracle 安全
Oracle的PL/SQL异常处理方法:守护数据之旅的“魔法盾”
【4月更文挑战第19天】Oracle PL/SQL的异常处理机制是保障数据安全的关键。通过预定义异常(如`NO_DATA_FOUND`)和自定义异常,开发者能优雅地管理错误。异常在子程序中抛出后会向上传播,直到被捕获,提供了一种集中处理错误的方式。理解和善用异常处理,如同手持“魔法盾”,确保程序在面对如除数为零、违反约束等挑战时,能有效保护数据的完整性和程序的稳定性。
|
5天前
|
SQL 自然语言处理 数据库
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学