.net framework4.7.2 使用EF DbContext 创建 Sqlite 数据库和数据表
时间: 2024-02-03 10:03:40 浏览: 183
首先,需要在项目中添加以下 NuGet 包:
- Microsoft.EntityFrameworkCore.Sqlite
- Microsoft.EntityFrameworkCore.Tools
接下来,创建一个 DbContext 类,并在构造函数中指定 Sqlite 数据库的文件路径,例如:
```csharp
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<MyEntity> MyEntities { get; set; }
public MyDbContext()
: base(new DbContextOptionsBuilder<MyDbContext>()
.UseSqlite("Data Source=mydatabase.db")
.Options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>()
.HasKey(e => e.Id);
}
}
public class MyEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
```
在上面的代码中,`MyEntity` 类表示数据表中的一行记录,`MyDbContext` 类表示整个数据库,包含了 `MyEntities` 属性,表示数据表。
其中,通过 `UseSqlite` 方法指定 Sqlite 数据库的文件路径,如果该文件不存在,EF 会自动创建它。
在 `OnModelCreating` 方法中,可以配置数据表的相关信息,例如主键、索引等。
最后,可以通过以下代码来创建数据表和插入数据:
```csharp
using (var db = new MyDbContext())
{
db.Database.EnsureCreated();
var entity = new MyEntity { Name = "test" };
db.MyEntities.Add(entity);
db.SaveChanges();
}
```
在上面的代码中,`EnsureCreated` 方法会自动创建数据表,如果数据表已经存在,则不会执行任何操作。
`MyEntities.Add` 方法会向数据表中插入一行记录,`SaveChanges` 方法会将更改保存到数据库中。
注意,Sqlite 数据库只支持基本数据类型,例如整数、字符串等。如果需要使用其他数据类型,需要进行类型转换。
阅读全文