gpt4 book ai didi

c# - Entity Framework ,我以前添加过这个条目吗?

转载 作者:行者123 更新时间:2023-11-30 12:57:03 25 4
gpt4 key购买 nike

我有一个简单的实体。

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 中。字典中基于键的查找是 O(1),因此即使字典中有一百万个条目,查找也非常快。保存实体时清除字典以减少内存占用。

关于c# - Entity Framework ,我以前添加过这个条目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com