C# 持久化对象实体框架
我是实体框架的新手。我想我有一个简单的疑问,但我没有在其他帖子中找到答案 我有:C# 持久化对象实体框架,c#,entity-framework,C#,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; p
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已经在数据库中。我只想存一块钱
在数据库中创建_B的命令是:
context.Entry(A_B).State = EntityState.Modified;
或
谢谢你的帮助 实体框架正在创建现有对象,因为这些对象未在上下文中跟踪,所以上下文正在数据库中创建实体
您需要跟踪将A和B的状态更改为“修改”以附加到当前上下文的对象,并避免在db上创建该对象。如果数据库已经构建/部分构建,则可以基于数据库构建代码。为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
查看课程,了解实体框架的详细介绍。如何在代码中实现这一点?你有一个例子吗?你已经在改变A_B的状态了,方法是一样的:context.Entry(A).state=EntityState.Modified;context.Entry(B.State=EntityState.Modified;在SaveChanges方法之前更改状态。谢谢Daniel,但不必修改A和B。还有其他方法吗?您不需要修改对象,只需将状态更改为modified,以便将该对象标记为上下文中跟踪的对象,并避免在db上重复。Ok Tim。谢谢
Scaffold-DbContext "Server=[servername];Database=[databasename];Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Test