Example #1
0
        private static void AccessorTest(
            string navigationName, Func <MyEntity, IEnumerable <MyOtherEntity> > reader, bool initializeCollections = true)
        {
            var accessor = new ClrCollectionAccessorFactory().Create(CreateNavigation(navigationName));

            var entity = new MyEntity();
            var value  = new MyOtherEntity();

            if (initializeCollections)
            {
                entity.InitializeCollections();
            }

            Assert.False(accessor.Contains(entity, value));
            accessor.Remove(entity, value);

            accessor.Add(entity, value);

            Assert.True(accessor.Contains(entity, value));
            Assert.Equal(1, reader(entity).Count());

            accessor.Remove(entity, value);

            Assert.False(accessor.Contains(entity, value));
            Assert.Equal(0, reader(entity).Count());
        }
Example #2
0
    public void Delegate_accessor_always_creates_collections_that_use_reference_equality_comparer()
    {
        IMutableModel model      = new Model();
        var           entityType = model.AddEntityType(typeof(MyEntity));
        var           otherType  = model.AddEntityType(typeof(MyEntityWithCustomComparer));
        var           foreignKey = otherType.AddForeignKey(
            otherType.AddProperty("MyEntityId", typeof(int)),
            entityType.SetPrimaryKey(entityType.AddProperty("Id", typeof(int))),
            entityType);

        var navigation = foreignKey.SetPrincipalToDependent(
            typeof(MyEntity).GetProperty(
                nameof(MyEntity.AsICollectionWithCustomComparer),
                BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance));

        RunConvention(navigation);

        var accessor = new ClrCollectionAccessorFactory().Create((INavigation)navigation);

        var entity = new MyEntity(initialize: false);
        var value  = new MyEntityWithCustomComparer {
            Id = 1
        };

        Assert.False(accessor.Contains(entity, value));

        accessor.Add(entity, value, forMaterialization: false);

        value.Id = 42;

        accessor.Add(entity, value, forMaterialization: false);

        Assert.Equal(1, entity.AsICollectionWithCustomComparer.Count);
    }
Example #3
0
    private void AccessorTest(
        string navigationName,
        Func <MyEntity, IEnumerable <MyOtherEntity> > reader,
        bool initializeCollections = true)
    {
        var accessor = new ClrCollectionAccessorFactory().Create(CreateNavigation(navigationName));

        var entity = new MyEntity(initializeCollections);

        var value = new MyOtherEntity();

        Assert.False(accessor.Contains(entity, value));
        accessor.Remove(entity, value);

        accessor.Add(entity, value, forMaterialization: false);

        Assert.True(accessor.Contains(entity, value));
        Assert.Single(reader(entity));

        accessor.Remove(entity, value);

        Assert.False(accessor.Contains(entity, value));
        Assert.Empty(reader(entity));
    }