public void Can_obtain_context()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Same(context, context.Entry(entity).Context);
                Assert.Same(context, context.Entry((object)entity).Context);
            }
        }
        public void Can_obtain_underlying_state_entry()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;
                var entry = ((IAccessor<IStateManager>)context.ChangeTracker).Service.GetOrCreateEntry(entity);

                Assert.Same(entry, ((IAccessor<InternalEntityEntry>)context.Entry(entity)).Service);
                Assert.Same(entry, ((IAccessor<InternalEntityEntry>)context.Entry((object)entity)).Service);
            }
        }
        public void Can_get_metadata()
        {
            using (var context = new FreezerContext())
            {
                var entity     = context.Add(new Chunky()).Entity;
                var entityType = context.Model.GetEntityType(typeof(Chunky));

                Assert.Same(entityType, context.Entry(entity).Metadata);
                Assert.Same(entityType, context.Entry((object)entity).Metadata);
            }
        }
        public void Can_obtain_underlying_state_entry()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;
                var entry  = ((IAccessor <IStateManager>)context.ChangeTracker).Service.GetOrCreateEntry(entity);

                Assert.Same(entry, ((IAccessor <InternalEntityEntry>)context.Entry(entity)).Service);
                Assert.Same(entry, ((IAccessor <InternalEntityEntry>)context.Entry((object)entity)).Service);
            }
        }
        public void Can_obtain_entity_instance()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                context.Add(entity);

                Assert.Same(entity, context.Entry(entity).Entity);
                Assert.Same(entity, context.Entry((object)entity).Entity);
            }
        }
        public void Can_obtain_underlying_state_entry()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;
                var entry = context.ChangeTracker.GetInfrastructure().GetOrCreateEntry(entity);

                Assert.Same(entry, context.Entry(entity).GetInfrastructure());
                Assert.Same(entry, context.Entry((object)entity).GetInfrastructure());
            }
        }
        public void Can_obtain_entity_instance()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                context.Add(entity);

                Assert.Same(entity, context.Entry(entity).Entity);
                Assert.Same(entity, context.Entry((object)entity).Entity);
            }
        }
        public void Can_get_back_reference_collection()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Cherry();
                context.Add(entity);

                var entityEntry = context.Entry(entity);
                Assert.Same(entityEntry.Entity, entityEntry.Navigation("Monkeys").EntityEntry.Entity);
            }
        }
        public void Can_get_back_reference_reference()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                context.Add(entity);

                var entityEntry = context.Entry(entity);
                Assert.Same(entityEntry.Entity, entityEntry.Navigation("Garcia").EntityEntry.Entity);
            }
        }
Beispiel #10
0
        public void Can_get_back_reference_generic()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Cherry();
                context.Add(entity);

                var entityEntry = context.Entry(entity);
                Assert.Same(entityEntry.Entity, entityEntry.Collection(e => e.Monkeys).EntityEntry.Entity);
            }
        }
Beispiel #11
0
        public void Throws_when_wrong_generic_type_is_used_while_getting_property_entry_by_name()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal(
                    CoreStrings.WrongGenericPropertyType("Monkey", entity.GetType().ShortDisplayName(), "int", "string"),
                    Assert.Throws <ArgumentException>(() => context.Entry(entity).Property <string>("Monkey")).Message);
            }
        }
Beispiel #12
0
        public void Can_get_back_reference_property()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                context.Add(entity);

                var entityEntry = context.Entry(entity);
                Assert.Same(entityEntry.Entity, entityEntry.Member("Monkey").EntityEntry.Entity);
            }
        }
        public void Can_get_metadata()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;
                var entityType = context.Model.GetEntityType(typeof(Chunky));

                Assert.Same(entityType, context.Entry(entity).Metadata);
                Assert.Same(entityType, context.Entry((object)entity).Metadata);
            }
        }
Beispiel #14
0
        public void Can_get_back_reference_generic()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                context.Add(entity);

                var entityEntry = context.Entry(entity);
                Assert.Same(entityEntry.Entity, entityEntry.Reference(e => e.Garcia).EntityEntry.Entity);
            }
        }
        public void Can_obtain_underlying_state_entry()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;
                var entry = context.ChangeTracker.GetService().GetOrCreateEntry(entity);

                Assert.Same(entry, context.Entry(entity).GetService());
                Assert.Same(entry, context.Entry((object)entity).GetService());
            }
        }
    public void Can_get_back_reference_collection()
    {
        using var context = new FreezerContext();
        var entity = new Cherry();

        context.Add(entity);

        var entityEntry = context.Entry(entity);

        Assert.Same(entityEntry.Entity, entityEntry.Member("Chunkies").EntityEntry.Entity);
    }
Beispiel #17
0
    public void Throws_when_wrong_property_name_is_used_while_getting_property_entry_by_name_using_Member()
    {
        using var context = new FreezerContext();
        var entity = context.Add(new Chunky()).Entity;

        Assert.Equal(
            CoreStrings.PropertyNotFound("Chimp", entity.GetType().Name),
            Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Member("Chimp").Metadata.Name).Message);
        Assert.Equal(
            CoreStrings.PropertyNotFound("Chimp", entity.GetType().Name),
            Assert.Throws <InvalidOperationException>(() => context.Entry((object)entity).Member("Chimp").Metadata.Name).Message);
    }
Beispiel #18
0
        private void ChangeStateOnEntry(EntityState initialState, EntityState expectedState)
        {
            using (var context = new FreezerContext())
            {
                var entry = context.Add(new Chunky());

                entry.State = initialState;
                entry.State = expectedState;

                Assert.Equal(expectedState, entry.State);
            }
        }
Beispiel #19
0
    public void Can_get_reference_entry_by_name_using_Navigation()
    {
        using var context = new FreezerContext();
        var entity = context.Add(new Chunky()).Entity;

        var entry = context.Entry(entity).Navigation("Garcia");

        Assert.Equal("Garcia", entry.Metadata.Name);
        Assert.IsType <ReferenceEntry>(entry);

        entry = context.Entry((object)entity).Navigation("Garcia");
        Assert.Equal("Garcia", entry.Metadata.Name);
        Assert.IsType <ReferenceEntry>(entry);
    }
Beispiel #20
0
    public void Can_get_collection_entry_by_name_using_Navigation()
    {
        using var context = new FreezerContext();
        var entity = context.Add(new Cherry()).Entity;

        var entry = context.Entry(entity).Navigation("Monkeys");

        Assert.Equal("Monkeys", entry.Metadata.Name);
        Assert.IsType <CollectionEntry>(entry);

        entry = context.Entry((object)entity).Navigation("Monkeys");
        Assert.Equal("Monkeys", entry.Metadata.Name);
        Assert.IsType <CollectionEntry>(entry);
    }
        public void Throws_when_accessing_property_as_navigation()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal(CoreStrings.NavigationIsProperty("Monkey", entity.GetType().Name,
                                                              nameof(EntityEntry.Reference), nameof(EntityEntry.Collection), nameof(EntityEntry.Property)),
                             Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Navigation("Monkey").Metadata.Name).Message);
                Assert.Equal(CoreStrings.NavigationIsProperty("Monkey", entity.GetType().Name,
                                                              nameof(EntityEntry.Reference), nameof(EntityEntry.Collection), nameof(EntityEntry.Property)),
                             Assert.Throws <InvalidOperationException>(() => context.Entry((object)entity).Navigation("Monkey").Metadata.Name).Message);
            }
        }
Beispiel #22
0
        public void Throws_when_wrong_property_name_is_used_while_getting_property_entry_by_name()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal(CoreStrings.PropertyNotFound("Chimp", entity.GetType()),
                             Assert.Throws <ModelItemNotFoundException>(() => context.Entry(entity).Property("Chimp").Metadata.Name).Message);
                Assert.Equal(CoreStrings.PropertyNotFound("Chimp", entity.GetType()),
                             Assert.Throws <ModelItemNotFoundException>(() => context.Entry((object)entity).Property("Chimp").Metadata.Name).Message);
                Assert.Equal(CoreStrings.PropertyNotFound("Chimp", entity.GetType()),
                             Assert.Throws <ModelItemNotFoundException>(() => context.Entry(entity).Property <int>("Chimp").Metadata.Name).Message);
            }
        }
Beispiel #23
0
    public void Can_get_skip_collection_entry_by_name_using_Member()
    {
        using var context = new FreezerContext();
        var entity = context.Add(new Cherry()).Entity;

        var entry = context.Entry(entity).Member("Chunkies");

        Assert.Equal("Chunkies", entry.Metadata.Name);
        Assert.IsType <CollectionEntry>(entry);

        entry = context.Entry((object)entity).Member("Chunkies");
        Assert.Equal("Chunkies", entry.Metadata.Name);
        Assert.IsType <CollectionEntry>(entry);
    }
Beispiel #24
0
    public void Can_get_and_change_state()
    {
        using var context = new FreezerContext();
        var entity = new Chunky();
        var entry  = context.Add(entity).GetInfrastructure();

        context.Entry(entity).State = EntityState.Modified;
        Assert.Equal(EntityState.Modified, entry.EntityState);
        Assert.Equal(EntityState.Modified, context.Entry(entity).State);

        context.Entry((object)entity).State = EntityState.Unchanged;
        Assert.Equal(EntityState.Unchanged, entry.EntityState);
        Assert.Equal(EntityState.Unchanged, context.Entry((object)entity).State);
    }
Beispiel #25
0
    public void Can_get_property_entry_by_name_using_Member()
    {
        using var context = new FreezerContext();
        var entity = context.Add(new Chunky()).Entity;

        var entry = context.Entry(entity).Member("Monkey");

        Assert.Equal("Monkey", entry.Metadata.Name);
        Assert.IsType <PropertyEntry>(entry);

        entry = context.Entry((object)entity).Member("Monkey");
        Assert.Equal("Monkey", entry.Metadata.Name);
        Assert.IsType <PropertyEntry>(entry);
    }
Beispiel #26
0
    public void Throws_when_accessing_collection_as_reference()
    {
        using var context = new FreezerContext();
        var entity = context.Add(new Cherry()).Entity;

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Reference("Monkeys")).Message);

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry((object)entity).Reference("Monkeys")).Message);

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Reference <Random>("Monkeys")).Message);

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Reference(e => e.Monkeys)).Message);

        var navigationBase = context.Entry(entity).Navigation("Monkeys").Metadata;

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Reference(navigationBase)).Message);

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry((object)entity).Reference(navigationBase)).Message);

        Assert.Equal(
            CoreStrings.ReferenceIsCollection(
                "Monkeys", entity.GetType().Name,
                nameof(EntityEntry.Reference), nameof(EntityEntry.Collection)),
            Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Reference <Random>(navigationBase)).Message);
    }
Beispiel #27
0
    public void Can_get_skip_collection_entry_by_IPropertyBase_using_Member()
    {
        using var context = new FreezerContext();
        var entity       = context.Add(new Cherry()).Entity;
        var propertyBase = (IPropertyBase)context.Entry(entity).Metadata.FindSkipNavigation("Chunkies") !;

        var entry = context.Entry(entity).Member(propertyBase);

        Assert.Same(propertyBase, entry.Metadata);
        Assert.IsType <CollectionEntry>(entry);

        entry = context.Entry((object)entity).Member(propertyBase);
        Assert.Same(propertyBase, entry.Metadata);
        Assert.IsType <CollectionEntry>(entry);
    }
Beispiel #28
0
    public void Can_get_collection_entry_by_INavigationBase_using_Navigation()
    {
        using var context = new FreezerContext();
        var entity         = context.Add(new Cherry()).Entity;
        var navigationBase = (INavigationBase)context.Entry(entity).Metadata.FindNavigation("Monkeys") !;

        var entry = context.Entry(entity).Navigation(navigationBase);

        Assert.Same(navigationBase, entry.Metadata);
        Assert.IsType <CollectionEntry>(entry);

        entry = context.Entry((object)entity).Navigation(navigationBase);
        Assert.Same(navigationBase, entry.Metadata);
        Assert.IsType <CollectionEntry>(entry);
    }
Beispiel #29
0
    public void Can_get_property_entry_by_IPropertyBase_using_Member()
    {
        using var context = new FreezerContext();
        var entity       = context.Add(new Chunky()).Entity;
        var propertyBase = (IPropertyBase)context.Entry(entity).Metadata.FindProperty("Monkey") !;

        var entry = context.Entry(entity).Member(propertyBase);

        Assert.Same(propertyBase, entry.Metadata);
        Assert.IsType <PropertyEntry>(entry);

        entry = context.Entry((object)entity).Member(propertyBase);
        Assert.Same(propertyBase, entry.Metadata);
        Assert.IsType <PropertyEntry>(entry);
    }
Beispiel #30
0
    public void Can_get_reference_entry_by_INavigationBase_using_Navigation()
    {
        using var context = new FreezerContext();
        var entity         = context.Add(new Chunky()).Entity;
        var navigationBase = (INavigationBase)context.Entry(entity).Metadata.FindNavigation("Garcia") !;

        var entry = context.Entry(entity).Navigation(navigationBase);

        Assert.Same(navigationBase, entry.Metadata);
        Assert.IsType <ReferenceEntry>(entry);

        entry = context.Entry((object)entity).Navigation(navigationBase);
        Assert.Same(navigationBase, entry.Metadata);
        Assert.IsType <ReferenceEntry>(entry);
    }
        public void Can_get_and_change_state()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                var entry = context.Add(entity).GetInfrastructure();

                context.Entry(entity).State = EntityState.Modified;
                Assert.Equal(EntityState.Modified, entry.EntityState);
                Assert.Equal(EntityState.Modified, context.Entry(entity).State);

                context.Entry((object)entity).State = EntityState.Unchanged;
                Assert.Equal(EntityState.Unchanged, entry.EntityState);
                Assert.Equal(EntityState.Unchanged, context.Entry((object)entity).State);
            }
        }
Beispiel #32
0
        public void Can_get_and_change_state()
        {
            using (var context = new FreezerContext())
            {
                var entity     = new Chunky();
                var stateEntry = context.Add(entity).StateEntry;

                context.Entry(entity).SetState(EntityState.Modified);
                Assert.Equal(EntityState.Modified, stateEntry.EntityState);
                Assert.Equal(EntityState.Modified, context.Entry(entity).State);

                context.Entry((object)entity).SetState(EntityState.Unchanged);
                Assert.Equal(EntityState.Unchanged, stateEntry.EntityState);
                Assert.Equal(EntityState.Unchanged, context.Entry((object)entity).State);
            }
        }
        public void Can_get_and_change_state()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                var entry = ((IAccessor<InternalEntityEntry>)context.Add(entity)).Service;

                context.Entry(entity).State = EntityState.Modified;
                Assert.Equal(EntityState.Modified, entry.EntityState);
                Assert.Equal(EntityState.Modified, context.Entry(entity).State);

                context.Entry((object)entity).State = EntityState.Unchanged;
                Assert.Equal(EntityState.Unchanged, entry.EntityState);
                Assert.Equal(EntityState.Unchanged, context.Entry((object)entity).State);
            }
        }
Beispiel #34
0
        public void Can_get_and_change_state()
        {
            using (var context = new FreezerContext())
            {
                var entity = new Chunky();
                var entry  = ((IAccessor <InternalEntityEntry>)context.Add(entity)).Service;

                context.Entry(entity).State = EntityState.Modified;
                Assert.Equal(EntityState.Modified, entry.EntityState);
                Assert.Equal(EntityState.Modified, context.Entry(entity).State);

                context.Entry((object)entity).State = EntityState.Unchanged;
                Assert.Equal(EntityState.Unchanged, entry.EntityState);
                Assert.Equal(EntityState.Unchanged, context.Entry((object)entity).State);
            }
        }
Beispiel #35
0
        public void Can_get_and_set_current_value_property()
        {
            using var context = new FreezerContext();
            var entity = new Chunky();

            context.Add(entity);

            var property = context.Entry(entity).Member("GarciaId");

            Assert.Null(property.CurrentValue);

            property.CurrentValue = 77;
            Assert.Equal(77, property.CurrentValue);

            property.CurrentValue = null;
            Assert.Null(property.CurrentValue);
        }
        public void Throws_when_accessing_refernce_as_collection()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal(CoreStrings.CollectionIsReference("Garcia", entity.GetType().Name,
                                                               nameof(EntityEntry.Collection), nameof(EntityEntry.Reference)),
                             Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Collection("Garcia").Metadata.Name).Message);
                Assert.Equal(CoreStrings.CollectionIsReference("Garcia", entity.GetType().Name,
                                                               nameof(EntityEntry.Collection), nameof(EntityEntry.Reference)),
                             Assert.Throws <InvalidOperationException>(() => context.Entry((object)entity).Collection("Garcia").Metadata.Name).Message);
                Assert.Equal(CoreStrings.CollectionIsReference("Garcia", entity.GetType().Name,
                                                               nameof(EntityEntry.Collection), nameof(EntityEntry.Reference)),
                             Assert.Throws <InvalidOperationException>(() => context.Entry(entity).Collection <Cherry>("Garcia").Metadata.Name).Message);
            }
        }
Beispiel #37
0
        public void Can_get_and_set_current_value_start_tracking_generic()
        {
            using (var context = new FreezerContext())
            {
                var cherry = new Cherry();
                var chunky = new Chunky();
                context.Add(cherry);

                var collection = context.Entry(cherry).Collection(e => e.Monkeys);

                Assert.Null(collection.CurrentValue);

                collection.CurrentValue = new List <Chunky>
                {
                    chunky
                };

                Assert.Same(cherry, chunky.Garcia);
                Assert.Same(chunky, cherry.Monkeys.Single());
                Assert.Equal(cherry.Id, chunky.GarciaId);
                Assert.Same(chunky, collection.CurrentValue.Single());

                Assert.Equal(EntityState.Added, context.Entry(cherry).State);
                Assert.Equal(EntityState.Added, context.Entry(chunky).State);

                collection.CurrentValue = null;

                Assert.Null(chunky.Garcia);
                Assert.Null(cherry.Monkeys);
                Assert.Null(chunky.GarciaId);
                Assert.Null(collection.CurrentValue);

                Assert.Equal(EntityState.Added, context.Entry(cherry).State);
                Assert.Equal(EntityState.Added, context.Entry(chunky).State);
            }
        }
        public void Can_get_generic_property_entry_by_lambda()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal("Monkey", context.Entry(entity).Property(e => e.Monkey).Metadata.Name);
            }
        }
        private void ChangeStateOnEntry(EntityState initialState, EntityState expectedState)
        {
            using (var context = new FreezerContext())
            {
                var entry = context.Add(new Chunky());

                entry.State = initialState;
                entry.State = expectedState;

                Assert.Equal(expectedState, entry.State);
            }
        }
        public void Can_get_property_entry_by_name()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal("Monkey", context.Entry(entity).Property("Monkey").Metadata.Name);
                Assert.Equal("Monkey", context.Entry((object)entity).Property("Monkey").Metadata.Name);
            }
        }
        public void Throws_when_wrong_generic_type_is_used_while_getting_property_entry_by_name()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal(Strings.WrongGenericPropertyType("Monkey", entity.GetType(), typeof(int).Name, typeof(string).Name),
                    Assert.Throws<ArgumentException>(() => context.Entry(entity).Property<string>("Monkey")).Message);
            }
        }
        public void Throws_when_wrong_property_name_is_used_while_getting_property_entry_by_name()
        {
            using (var context = new FreezerContext())
            {
                var entity = context.Add(new Chunky()).Entity;

                Assert.Equal(Strings.PropertyNotFound("Chimp", entity.GetType()),
                    Assert.Throws<ModelItemNotFoundException>(() => context.Entry(entity).Property("Chimp").Metadata.Name).Message);
                Assert.Equal(Strings.PropertyNotFound("Chimp", entity.GetType()),
                    Assert.Throws<ModelItemNotFoundException>(() => context.Entry((object)entity).Property("Chimp").Metadata.Name).Message);
                Assert.Equal(Strings.PropertyNotFound("Chimp", entity.GetType()),
                    Assert.Throws<ModelItemNotFoundException>(() => context.Entry(entity).Property<int>("Chimp").Metadata.Name).Message);
            }
        }