C# 在实体框架上下文中使用Create()正确吗?

C# 在实体框架上下文中使用Create()正确吗?,c#,.net,entity-framework,C#,.net,Entity Framework,当创建一个将持久化到数据库的对象,并为此使用Create()方法时,以下代码段是否也这样做 片段1: Client client = new Client(); client.Name = "Jonh Doe"; database.Clients.Add(client); database.SaveChanges(); 片段2: var client = database.Clients.Create(); client.Name = "Jonh Doe"; database.SaveChan

当创建一个将持久化到数据库的对象,并为此使用
Create()
方法时,以下代码段是否也这样做

片段1:

Client client = new Client();
client.Name = "Jonh Doe";
database.Clients.Add(client);
database.SaveChanges();
片段2:

var client = database.Clients.Create();
client.Name = "Jonh Doe";
database.SaveChanges();
根据他们的说法,他们没有

“请注意,此实例未添加或附加到集合”

所以你的第二个片段应该是

var client = database.Clients.Create();
client.Name = "Jonh Doe";
database.Clients.Add(client);
database.SaveChanges();

Create()
为您的
Client
POCO创建一个代理,但它没有附加到数据库上下文。那么为什么需要使用
Create()
方法呢?在同一文档中,它说如果类型符合所有要求,它将返回一个代理。对不起,我不知道“代理”的含义在这种情况下,询问EF团队或阅读文档。我只是一个信使。我相信如果它是一个自跟踪代理,并且你将它添加到集合中,那么它将被自己跟踪。