Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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# 在不保存更改的情况下更新DBSet_C#_.net_Entity Framework_Transactions_Entity Framework 6 - Fatal编程技术网

C# 在不保存更改的情况下更新DBSet

C# 在不保存更改的情况下更新DBSet,c#,.net,entity-framework,transactions,entity-framework-6,C#,.net,Entity Framework,Transactions,Entity Framework 6,我试图达到以下目标: 将新实体添加到DbContext的数据集中 暂时不要执行SaveChanges,因为在插入后出现任何错误时,新条目不应进入数据库 但是,如果新条目在客户集合中,我需要稍后进行搜索 以下是我现在拥有的: public virtual DbSet<Customer> Customers { get; set; } _context.Customers.Add(customer); // NO _context.SaveChanges(); // ... var

我试图达到以下目标:

  • 将新实体添加到DbContext的数据集中
  • 暂时不要执行SaveChanges,因为在插入后出现任何错误时,新条目不应进入数据库
  • 但是,如果新条目在客户集合中,我需要稍后进行搜索
以下是我现在拥有的:

public virtual DbSet<Customer> Customers { get; set; }

_context.Customers.Add(customer);
// NO _context.SaveChanges();
// ...
var existsingUser = _context.Customers
        .FirstOrDefault(x => x.CodeCustomer == customer.CodeCustomer);
// existsingUser = null, and should be valid populated object
是否有任何可能的解决方案可以“真的”将客户添加到客户集合中,而不使用saveChanges()?
如果是这样,请告诉我,

如果没有
SaveChanges()
,就无法添加到集合中<代码>\u context.Customers.Add(customer)表示您将此对象标记为添加到数据库中。在CAB环境下,EF上下文的工作方式类似于事务。您可以进行大量操作,但只能
SaveChanges()
保存到数据库

\u context.Customers.FirstOrDefault
从数据库请求数据

_context.Customers.Add(customer);
_context.SaveChanges();
// ...
var existsingUser = _context.Customers
        .FirstOrDefault(x => x.CodeCustomer == customer.CodeCustomer);
// existsingUser = has object

我希望它能帮助您。

如果没有
SaveChanges()
,就不可能添加到集合中<代码>\u context.Customers.Add(customer)表示您将此对象标记为添加到数据库中。在CAB环境下,EF上下文的工作方式类似于事务。您可以进行大量操作,但只能
SaveChanges()
保存到数据库

\u context.Customers.FirstOrDefault
从数据库请求数据

_context.Customers.Add(customer);
_context.SaveChanges();
// ...
var existsingUser = _context.Customers
        .FirstOrDefault(x => x.CodeCustomer == customer.CodeCustomer);
// existsingUser = has object
我希望它能帮助您。

您可以检查一下酒店。从文档中:

此属性返回一个ObservableCollection,其中包含给定DbSet的上下文当前跟踪的所有未更改、修改和添加的对象

例如:

var existsingUser = _context.Customers
    .Local
    .FirstOrDefault(x => x.CodeCustomer == customer.CodeCustomer);
你可以检查一下酒店。从文档中:

此属性返回一个ObservableCollection,其中包含给定DbSet的上下文当前跟踪的所有未更改、修改和添加的对象

例如:

var existsingUser = _context.Customers
    .Local
    .FirstOrDefault(x => x.CodeCustomer == customer.CodeCustomer);

不正确,您可以使用
Local
属性-查看我的答案。不正确,您可以使用
Local
属性-查看我的答案。太棒了,这就是我要找的。是否有其他属性可以从本地数据库集和现有数据库集获取?否,您需要同时查询这两个属性。请记住,查询数据库和本地存储。你可以很容易地编写一个包装器函数来同时完成这两个任务。是否有其他属性可以从本地数据库集和现有数据库集获取?否,您需要同时查询这两个属性。请记住,查询数据库和本地存储。不过,您可以编写一个包装器函数来同时完成这两项工作。