编写一个程序,.net frameword 4.7.2框架,使用EF6创建名称为mydb.sqlite的数据库,里面有Test1和Test2两个实体类,Test2是Test1的导航属性,并且可以进行增删改查等操作
时间: 2023-12-24 17:02:57 浏览: 74
首先,需要安装Entity Framework 6。在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,搜索“EntityFramework”,并将其安装。
接下来,创建一个新的类库项目,并在项目中添加对Entity Framework的引用。然后,创建一个新的模型类,以表示Test1和Test2实体类。
```csharp
public class Test1
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Test2 Test2 { get; set; }
}
public class Test2
{
public int Id { get; set; }
public string Description { get; set; }
public virtual ICollection<Test1> Test1s { get; set; }
}
```
接下来,创建一个DbContext类,并定义Test1和Test2实体类的DbSet属性。
```csharp
public class MyDbContext : DbContext
{
public DbSet<Test1> Test1s { get; set; }
public DbSet<Test2> Test2s { get; set; }
public MyDbContext() : base("name=MyDbConnectionString")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Test1>()
.HasOptional(t => t.Test2)
.WithMany(t => t.Test1s)
.HasForeignKey(t => t.Test2Id);
}
}
```
接下来,将连接字符串添加到App.config文件中。
```xml
<connectionStrings>
<add name="MyDbConnectionString" providerName="System.Data.SQLite" connectionString="Data Source=mydb.sqlite"/>
</connectionStrings>
```
然后,可以使用以下代码来创建数据库。
```csharp
using (var context = new MyDbContext())
{
context.Database.CreateIfNotExists();
}
```
现在,可以使用以下代码来添加、更新、删除和查询Test1和Test2实体类。
```csharp
// 添加Test1和Test2实体类
using (var context = new MyDbContext())
{
var test2 = new Test2 { Description = "Test2" };
var test1 = new Test1 { Name = "Test1", Test2 = test2 };
context.Test1s.Add(test1);
context.SaveChanges();
}
// 更新Test1实体类
using (var context = new MyDbContext())
{
var test1 = context.Test1s.FirstOrDefault(t => t.Name == "Test1");
if (test1 != null)
{
test1.Name = "Test1 Updated";
context.SaveChanges();
}
}
// 删除Test1实体类
using (var context = new MyDbContext())
{
var test1 = context.Test1s.FirstOrDefault(t => t.Name == "Test1 Updated");
if (test1 != null)
{
context.Test1s.Remove(test1);
context.SaveChanges();
}
}
// 查询Test1和Test2实体类
using (var context = new MyDbContext())
{
var test1s = context.Test1s.Include(t => t.Test2).ToList();
foreach (var test1 in test1s)
{
Console.WriteLine($"Test1: {test1.Name}, Test2: {test1.Test2?.Description}");
}
}
```
阅读全文