我试图在调用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中删除未保存的实体,我将非常感激。
最好的问候
兰斯
答案 0 :(得分:2)
尝试分离它,这样EF将停止跟踪它,并且不会采取任何操作来序列化对DB的更改。
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|
// +---------------+