Scripts 学盟
标题:
EF code first + Sqlite搭建
[打印本页]
作者:
嘟嘟
时间:
2013-5-16 11:20:08
标题:
EF code first + Sqlite搭建
本帖最后由 嘟嘟 于 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
作者:
混混@普宁.中国
时间:
2013-5-16 11:47:01
好
作者:
嘟嘟
时间:
2013-5-16 11:51:49
混混@普宁.中国 发表于 2013-5-16 11:47
好
欢迎光临 Scripts 学盟 (http://www.iscripts.org/)
Powered by Discuz! X2