设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 2524|回复: 2
打印 上一主题 下一主题

EF code first + Sqlite搭建 [复制链接]

Rank: 2

跳转到指定楼层
1#
嘟嘟 发表于 2013-5-16 11:20:08 |只看该作者 |倒序浏览
本帖最后由 嘟嘟 于 2013-5-16 11:28 编辑

1.搭建前准备
   
EntityFramework.dll
System.Data.SQLite.dll
System.Data.SQLite.Linq.dll
X86 和 X64 的SQLite.Interop.dll

2 新建解决方案 JXCManage 和 类库JXCDataContext

3.在  JXCDataContext类库添加EntityFramework.dll,System.Data.Entity,System.Data的引用,并且新建两个文件夹 分别为
     Entitys
     Mappings
和 JXCDBContext.cs 类

4.新建 sqlite数据库:DDJXC
   新建表:UserTab

   列名                             类型                       长度              是否为空              默认值        描述        举例
   UserNo                         NVARCHAR                20                   否                                            主键(用户编号)       
   UserName                 NVARCHAR                20                   否                                            用户名       
   UPassWord                 NVARCHAR             100                   否                                            密码       
   UEmail                         NVARCHAR                50                   是                                            邮箱       
   RegisterTime                 DateTime                                           否                                            注册时间       
   LastLoginTime         DateTime                                           是                                            最后登录时间       
   LastUpdateTime         DateTime                                           否                                            最后用户更新时间       

5. 在Entitys文件夹和Mappings文件夹下分别添加 User.cs和UserMapping.cs
    public partial class User
    {
        public User()
        {
            this.CommodityPurchases = new HashSet<CommodityPurchase>();  
        }
        /// <summary>
        /// 用户编号
        /// </summary>
        public string UserNo { get; set; }

        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 密码
        /// </summary>
        public string UPassWord { get; set; }

        /// <summary>
        /// 邮箱
        /// </summary>
        public string UEmail { get; set; }

        /// <summary>
        /// 注册时间
        /// </summary>
        public DateTime RegisterTime { get; set; }

        /// <summary>
        /// 最后登录时间
        /// </summary>
        public DateTime LastLoginTime { get; set; }

        /// <summary>
        /// 最后用户更新时间
        /// </summary>
        public DateTime LastUpdateTime { get; set; }
        
    }
   
    internal partial class UserMapping:EntityTypeConfiguration<User>
    {
        public UserMapping()
        {
            this.HasKey(u => u.UserNo);
            this.ToTable("UserTab");
            this.Property(u => u.UserNo).HasColumnName("UserNo").IsRequired().HasMaxLength(20);
            this.Property(u => u.UserName).HasColumnName("UserName").IsRequired().HasMaxLength(20);
            this.Property(u => u.UPassWord).HasMaxLength(100).HasColumnName("UPassWord").IsRequired();
            this.Property(u => u.UEmail).HasColumnName("UEmail").HasMaxLength(50).IsOptional();
            this.Property(u => u.RegisterTime).HasColumnName("RegisterTime");
            this.Property(u => u.LastLoginTime).HasColumnName("LastLoginTime");
            this.Property(u => u.LastUpdateTime).HasColumnName("LastUpdateTime");
        }
    }
6 配置 JXCDBContext.cs
   public partial class JXCDBContext : DbContext
    {
        static JXCDBContext()
        {

        }
        public JXCDBContext()
            : base("name=SqlliteContextStr")
        {

        }
        public JXCDBContext(string nameStr)
            : base(nameStr)
        {

        }
        public JXCDBContext(string nameStr, bool isLazyLoading)
            : base(nameStr)
        {

        }
        public JXCDBContext(bool isLazyLoading)
            : this()
        {

        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
            modelBuilder.Configurations.Add(new UserMapping());
        }
        public DbSet<User> Users { get; set; }

    }
到此为止 JXCDataContext类库的工作已经完成!

7.在当前解决方案 新建 控制台应用程序 ConAPP 来调用 JXCDataContext
   
    步骤1.
              ConAPP 添加 EntityFramework.dll,System.Data.SQLite.dll,System.Data.SQLite.Linq.dll,JXCDataContext项目的引用
   步骤2.
              ConAPP 添加 database,x64,X86 三个文件夹,把X86 和 X64 的SQLite.Interop.dll,和数据库文件DDJXC分别添加到对应的文件夹中,并且设置这三个文件的文件属性“复制到输出目录”的值为:“始终复制”或“如果较新则复制”;
              添加App.config文件并配置节点:
             <configuration>
                 <system.data>
                      <DbProviderFactories>
                            <remove invariant="System.Data.SQLite" />
                            <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data                       Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
                      </DbProviderFactories>
                </system.data>
                <connectionStrings>
                       <add name="SqlliteContextStr" connectionString="Data Source=|DataDirectory|database\DDJXC.db;journal mode=Memory" providerName="System.Data.SQLite"/>
                </connectionStrings>
            </configuration>

    步骤3.
             书写具体代码如:添加/删除/修改等 在这就不详细写了,有问题请Q:390491408
   
   
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0
哈哈哈大笑三声!

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

2#
混混@普宁.中国 实名认证  发表于 2013-5-16 11:47:01 |只看该作者

使用道具 举报

Rank: 2

3#
嘟嘟 发表于 2013-5-16 11:51:49 |只看该作者
混混@普宁.中国 发表于 2013-5-16 11:47

哈哈哈大笑三声!

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-5-5 03:00 , Processed in 1.054006 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部