{"action":"opened","issue":{"url":"https://api.github.com/repos/aspnet/EntityFramework/issues/3625","labels_url":"https://api.github.com/repos/aspnet/EntityFramework/issues/3625/labels{/name}","comments_url":"https://api.github.com/repos/aspnet/EntityFramework/issues/3625/comments","events_url":"https://api.github.com/repos/aspnet/EntityFramework/issues/3625/events","html_url":"https://github.com/aspnet/EntityFramework/issues/3625","id":114485121,"number":3625,"title":"Change tracking doesn't handle empty property name properly","user":{"login":"flagbug","id":964691,"avatar_url":"https://avatars.githubusercontent.com/u/964691?v=3","gravatar_id":"","url":"https://api.github.com/users/flagbug","html_url":"https://github.com/flagbug","followers_url":"https://api.github.com/users/flagbug/followers","following_url":"https://api.github.com/users/flagbug/following{/other_user}","gists_url":"https://api.github.com/users/flagbug/gists{/gist_id}","starred_url":"https://api.github.com/users/flagbug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flagbug/subscriptions","organizations_url":"https://api.github.com/users/flagbug/orgs","repos_url":"https://api.github.com/users/flagbug/repos","events_url":"https://api.github.com/users/flagbug/events{/privacy}","received_events_url":"https://api.github.com/users/flagbug/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-11-01T18:42:38Z","updated_at":"2015-11-01T18:42:38Z","closed_at":null,"body":"When implementing `INotifyPropertyChanged` on a model and sending an empty string as `PropertyName` in the `PropertyChangedEventArgs` event args, EF throws an `ArgumentException` with the message `The string argument 'propertyName' cannot be empty`\r\n\r\nThe remarks section of the [MSDN Documentation page] (https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.propertychanged(v=vs.110).aspx)  clearly states: \r\n\r\n> The PropertyChanged event can indicate all properties on the object have changed by using either null or String.Empty as the property name in the PropertyChangedEventArgs.\r\n\r\nso EF should handle this properly.\r\n\r\nHere is a stacktrace:\r\n\r\n``` \t\r\nEntityFramework.Core.dll!Microsoft.Data.Entity.Utilities.Check.NotEmpty(string value, string parameterName)\tUnknown\r\n \tEntityFramework.Core.dll!Microsoft.Data.Entity.Metadata.EntityType.FindProperty(string propertyName)\tUnknown\r\n \tEntityFramework.Core.dll!Microsoft.Data.Entity.Metadata.EntityType.Microsoft.Data.Entity.Metadata.IEntityType.FindProperty(string propertyName)\tUnknown\r\n \tEntityFramework.Core.dll!Microsoft.Data.Entity.ChangeTracking.Internal.InternalEntityEntrySubscriber.TryGetPropertyBase(Microsoft.Data.Entity.Metadata.IEntityType entityType, string propertyName)\tUnknown\r\n \tEntityFramework.Core.dll!Microsoft.Data.Entity.ChangeTracking.Internal.InternalEntityEntrySubscriber.SnapshotAndSubscribe.AnonymousMethod__2(object s, System.ComponentModel.PropertyChangedEventArgs e)\tUnknown\r\n>\t[REDACTED].OnPropertyChanged(string propertyName) Line 175\tC#\r\n```\r\n\r\nGoing into the EF source, I found that there is an \"empty or null\" check at this line: https://github.com/aspnet/EntityFramework/blob/46f2c8d3fdb74d91c24192ef0f2c416a4ceba02d/src/EntityFramework.Core/Metadata/Internal/EntityType.cs#L827\r\n\r\nI would send a PR, but I don't have enough knowledge about the internals of EF to change this behavior"}}