我有一个简单的实体。
public partial class Thing
{
public Thing()
{}
public int Id { get; set; }
public string Name { get; set; }
}
我正在向 localDB 数据库中插入数千个新条目,但只有少数几个独特的东西。 如果我在每次插入后都保存更改,那么它会运行得很慢,但如果我不保存更改,那么我无法判断 newThing.Name 是否已经存在。 或者我可以吗?我对检查上下文中存在的东西与数据库与 SaveChanges 之前/之后的位置非常困惑。谁能为我澄清一下?
Thing newThing = new Thing();
newThing.Name = "MyName";
context.Things.Add(d);
//returns null
Thing myFirstThing = context.Things.FirstOrDefault(c => c.Name == newThing.Name);
//returns false
if (context.Detectors.Any(c => c.Name == newThing.Name))
{ //do some stuff}
最佳答案
我认为您可以使用 DbContext 上的 ChangeTracker 来执行此操作,但是,它可能会很慢。
//(warning: free-handing this):
myContext.ChangeTracker.Entries<theEntityType>().Any(e => e.State == EntityState.Added && e.Entity.TheField == yourString);
我认为(或者一些接近的东西会起作用,但它可能会变得非常慢,因为你在每次调用时扫描一个集合。(每次添加后它会变慢一点 - 一个有 1000 个成员的集合会燃烧很多滴答声)
相反,您可以在添加实体时将实体添加到 Dictionary
关于c# - Entity Framework ,我以前添加过这个条目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795374/