大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > 让ADO.NET Entity Framework 支持AC

让ADO.NET Entity Framework 支持AC(1)

关键词:数据库.NETADOEntity  阅读(1902) 赞(16)

[摘要]本文是对让ADO.NET Entity Framework 支持ACCESS数据库的讲解,与大家分享。
接到一个程序和网页交互的项目,用ADO.NET Entity Framework (以下简称EF)很快就搞完了,但是对方的空间提供的MSSQL数据库比较昂贵,所以就采用ACCESS数据库,但是我查了资料发现 EF不支持Access数据库,(以前觉得LINQ TO SQL 不支持 这个应该支持),写完的代码不想用OLEDB在写了,于是网上一顿查,试验了ALINQ和其他很多的,总是不能符合项目的需要。不是更新不行就算插入失败,要不就是经常查询错误。最后没办法,我自己决定写一个实体支持ACCESS数据库,我觉得懒人应该有需要这个的,当然大侠们估计有更好的办法来更懒一些。

懒人第一步:

因为VS的实体生成器不支持ACCESS数据库,所以无法生成代码,但是想快速开发项目,那么你可以用SQL数据库先来设计,然后导出数据库到ACCESS数据库,这样做的目的是让生成器可以生成我们所需要的代码。注意设计数据库字段的时候要考虑他们的兼容性。

勤快第二步:

开始写代码了,原始的上下文代码如下:

#region 上下文
    
    /// <summary>
    /// 没有元数据文档可用。
    /// </summary>
    public partial class SqlDoorEntities1 : ObjectContext
    {
        #region 构造函数
    
        /// <summary>
        /// 请使用应用程序配置文件的“SqlDoorEntities1”部分中的连接字符串初始化新 SqlDoorEntities1 对象。
        /// </summary>
        public SqlDoorEntities1() : base("name=SqlDoorEntities1", "SqlDoorEntities1")
        {
            OnContextCreated();
        }
    
        /// <summary>
        /// 初始化新的 SqlDoorEntities1 对象。
        /// </summary>
        public SqlDoorEntities1(string connectionString) : base(connectionString, "SqlDoorEntities1")
        {
            OnContextCreated();
        }
    
        /// <summary>
        /// 初始化新的 SqlDoorEntities1 对象。
        /// </summary>
        public SqlDoorEntities1(EntityConnection connection) : base(connection, "SqlDoorEntities1")
        {
            OnContextCreated();
        }
    
        #endregion
    
        #region 分部方法
    
        partial void OnContextCreated();
    
        #endregion
    
        #region ObjectSet 属性
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        public ObjectSet<CmdMsg> CmdMsg
        {
            get
            {
                if ((_CmdMsg == null))
                {
                    _CmdMsg = base.CreateObjectSet<CmdMsg>("CmdMsg");
                }
                return _CmdMsg;
            }
        }
        private ObjectSet<CmdMsg> _CmdMsg;
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        public ObjectSet<Door> Door
        {
            get
            {
                if ((_Door == null))
                {
                    _Door = base.CreateObjectSet<Door>("Door");
                }
                return _Door;
            }
        }
        private ObjectSet<Door> _Door;
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        public ObjectSet<Manager> Manager
        {
            get
            {
                if ((_Manager == null))
                {
                    _Manager = base.CreateObjectSet<Manager>("Manager");
                }
                return _Manager;
            }
        }
        private ObjectSet<Manager> _Manager;
    
        /// <summary>
        /// 没有元数据文档可用。
        /// </summary>
        public ObjectSet<Users> Users
        {
            get
            {
                if ((_Users == null))
                {
                    _Users = base.CreateObjectSet<Users>("Users");
                }
                return _Users;
            }
        }
        private ObjectSet<Users> _Users;

        #endregion

        #region AddTo 方法
    
        /// <summary>
        /// 用于向 CmdMsg EntitySet 添加新对象的方法,已弃用。请考虑改用关联的 ObjectSet&lt;T&gt; 属性的 .Add 方法。
        /// </summary>
        public void AddToCmdMsg(CmdMsg cmdMsg)
        {
            base.AddObject("CmdMsg", cmdMsg);
        }
    
        /// <summary>
        /// 用于向 Door EntitySet 添加新对象的方法,已弃用。请考虑改用关联的 ObjectSet&lt;T&gt; 属性的 .Add 方法。
        /// </summary>
        public void AddToDoor(Door door)
        {
            base.AddObject("Door", door);
        }
    
        /// <summary>
        /// 用于向 Manager EntitySet 添加新对象的方法,已弃用。请考虑改用关联的 ObjectSet&lt;T&gt; 属性的 .Add 方法。
        /// </summary>
        public void AddToManager(Manager manager)
        {
            base.AddObject("Manager", manager);
        }
    
        /// <summary>
        /// 用于向 Users EntitySet 添加新对象的方法,已弃用。请考虑改用关联的 ObjectSet&lt;T&gt; 属性的 .Add 方法。
        /// </summary>
        public void AddToUsers(Users users)
        {
            base.AddObject("Users", users);
        }

        #endregion

    }

    #endregion

«上一页12345下一页»


相关评论