Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 持久化对象实体框架_C#_Entity Framework - Fatal编程技术网

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