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