我是Entity Framework的新手。我想我有一个简单的疑问,但我在其他帖子中找不到答案。
我有:
public class A_B
{
private int Id;
private string name;
private A a;
private B b;
}
public class A
{
private int Id;
private string name;
}
public class B
{
private int Id;
private string name;
}
当我要求实体框架在数据库中创建对象A_B时,实体框架也在数据库中创建A_B,A和B.我不想在数据库中创建对象A和B. A和B已经在数据库中。我只想保存A_B。
在数据库中创建A_B的命令是:
context.Entry(A_B).State = EntityState.Modified;
或
context.Entry(A_B).State = EntityState.Added;
DbContext.SaveChanges();
感谢您的帮助!
答案 0 :(得分:0)
实体框架正在创建现有对象,因为在上下文中未跟踪,因此上下文正在数据库上创建实体。
您需要跟踪对象,将A和B的状态更改为Modified以附加到当前上下文,并避免在db上创建。
答案 1 :(得分:0)
如果已经构建/部分构建了数据库,则可以根据数据库构建代码。为Microsoft.EntityFrameworkCore.Design,Microsoft.EntityFrameworkCore.SqlServer(假设您正在使用SQL Server)和Microsoft.EntityFrameworkCore.Tools添加nuget包。然后,您可以运行类似于下面的命令来自动生成代码。
Scaffold-DbContext "Server=[servername];Database=[databasename];Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Test
查看this课程,了解对Entity Framework的详细介绍。