How to observe the Add action of DbSet<T>?

对着背影说爱祢 提交于 2019-12-05 10:29:24

The DbSet has a Local property which is an ObservableCollection. You can subscribe to the CollectionChanged event and update the sort order there.

public class Foo {
        private MyDbContext _db = new MyDbContext();

        public void HelloWorld() {

            _db.Contacts.Local.CollectionChanged += ContactsChanged;

            Contact contact = ....; //< A contact from database.

            ContactField field = ....; ///< A new field 
            .... ///< assign other properties into this `field`
            field.FieldType = FieldType.Phone;

            // How to automatically update `SortOrder` 
            // when adding field into `ContactFields`
            contact.ContactFields.Add(field);

            _db.SaveChanges();
        }

        public void ContactsChanged(object sender, NotifyCollectionChangedEventArgs args) {

            if (args.Action == NotifyCollectionChangedAction.Add)
            {

                // sort
            }    
        }
}

Alternatively override the SaveChanges method on the DbContext, and use the local ChangeTracker property to find new entities of a particular type and set their sort order property. Works great for setting things like last updated date in 1 place.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!