@@ -14,6 +14,28 @@ public class EntityCollectionModel
1414 public string Title { get ; set ; }
1515 }
1616
17+ public class EntityCollectionOverriddenEqualsModel
18+ {
19+ public string Id { get ; set ; }
20+
21+ public string EqualsProperty { get ; set ; }
22+
23+ public override bool Equals ( object obj )
24+ {
25+ if ( obj is EntityCollectionOverriddenEqualsModel model )
26+ {
27+ return EqualsProperty == model . EqualsProperty ;
28+ }
29+
30+ return false ;
31+ }
32+
33+ public override int GetHashCode ( )
34+ {
35+ return EqualsProperty ? . GetHashCode ( ) ?? base . GetHashCode ( ) ;
36+ }
37+ }
38+
1739 [ TestMethod ]
1840 public void AddNewEntry ( )
1941 {
@@ -65,6 +87,24 @@ public void UpdateExistingEntryInstanceMatch()
6587 Assert . IsTrue ( entityCollection . GetEntries ( ) . All ( e => e . Entity == entity && e . State == EntityEntryState . NoChanges ) ) ;
6688 }
6789
90+ [ TestMethod ]
91+ public void EntryDoesntMatchOnEqualityOverride ( )
92+ {
93+ var entityCollection = new EntityCollection < EntityCollectionOverriddenEqualsModel > ( ) ;
94+ var entityA = new EntityCollectionOverriddenEqualsModel
95+ {
96+ EqualsProperty = "DbEntityCollectionTests.EntityCollectionOverriddenEqualsModel"
97+ } ;
98+ entityCollection . Update ( entityA , EntityEntryState . Added ) ;
99+
100+ var entityB = new EntityCollectionOverriddenEqualsModel
101+ {
102+ EqualsProperty = "DbEntityCollectionTests.EntityCollectionOverriddenEqualsModel"
103+ } ;
104+ entityCollection . Update ( entityB , EntityEntryState . Added ) ;
105+ Assert . AreEqual ( 2 , entityCollection . GetEntries ( ) . Count ( ) ) ;
106+ }
107+
68108 [ TestMethod ]
69109 public void RemoveRange ( )
70110 {
0 commit comments