c#Entity Framework在SaveChanges之前从数据上下文中删除添加的对象

时间:2018-02-07 19:12:26

标签: c# entity-framework

我试图在调用SaveChanges之前从Context中删除实体。

实体是这样添加的

DbContext.Set<T>().Add(new T());

最初我会删除单个项目,方法是将其状态设置为EntityState.UnChanged(如果适用于我的重写DbContext.SaveChanges()方法。

但是我有多个我不想持久化的实体,当第二个实体的状态更改为UnChanged时,我收到错误 - &#34;保存或接受更改失败,因为多个实体具有相同的主键值&#34; - 显然他们的ID都是0,因为他们还没有得到保存。

当我尝试

DbContext.Set<T>().Remove(entity);

它只是没有删除实体

我知道将EntityState设置为UnChanged是我几年前发现的一个黑客攻击,现在又回来咬我了!

如果任何正文可以告诉我如何在保存之前从DbContext中删除未保存的实体,我将非常感激。

最好的问候

兰斯

1 个答案:

答案 0 :(得分:2)

尝试分离它,这样EF将停止跟踪它,并且不会采取任何操作来序列化对DB的更改。

https://msdn.microsoft.com/en-us/library/system.data.entity.core.objects.objectcontext.detach(v=vs.113).aspx

import org.apache.spark.sql.functions._

val df = Seq(
  "London, United Kingdom", "Bengaluru, Karnataka, India"
).toDF("_location")

df.select(regexp_extract($"_location", ".*,([^,]*)$", 1).alias("country")).show

// +---------------+
// |        country|
// +---------------+
// | United Kingdom|
// |          India|
// +---------------+