Beispiel #1
0
        public static void Evict <TEntity>(this DbContext context, params object[] keyValues) where TEntity : class
        {
            //https://weblogs.asp.net/ricardoperes/implementing-missing-features-in-entity-framework-core
            var tracker = context.ChangeTracker;
            var entries = tracker.Entries <TEntity>();

            if (keyValues.Any() == true)
            {
                var entityType = context.FindEntityType <TEntity>();
                var keys       = entityType.GetKeys();
                var i          = 0;
                foreach (var property in keys.SelectMany(x => x.Properties))
                {
                    var keyValue = keyValues[i];
                    entries = entries.Where(e => keyValue.Equals(e.Property(property.Name).CurrentValue));
                    i++;
                }
            }
            foreach (var entry in entries.ToList())
            {
                entry.State = EntityState.Detached;
            }
        }
 public static IKey FindPrimaryKey <T>(this DbContext dbContext, T entity)
 => dbContext.FindEntityType <T>().FindPrimaryKey();