コード例 #1
0
        public void Can_mark_type_as_owned_type()
        {
            var model        = new Model();
            var modelBuilder = CreateModelBuilder(model);

            var entityBuilder = modelBuilder.Entity(typeof(Customer), ConfigurationSource.Explicit);

            Assert.NotNull(modelBuilder.Entity(typeof(Details), ConfigurationSource.Convention));

            Assert.False(model.ShouldBeOwnedType(typeof(Details)));

            Assert.NotNull(entityBuilder.Owns(typeof(Details), nameof(Customer.Details), ConfigurationSource.Convention));

            Assert.True(modelBuilder.Ignore(typeof(Details), ConfigurationSource.Convention));

            Assert.Empty(model.GetEntityTypes(typeof(Details)));

            Assert.Null(entityBuilder.Owns(typeof(Details), nameof(Customer.Details), ConfigurationSource.Convention));

            Assert.False(modelBuilder.Owned(typeof(Details), ConfigurationSource.Convention));

            Assert.NotNull(entityBuilder.Owns(typeof(Details), nameof(Customer.Details), ConfigurationSource.DataAnnotation));

            Assert.True(modelBuilder.Owned(typeof(Details), ConfigurationSource.Convention));

            Assert.True(modelBuilder.Owned(typeof(Details), ConfigurationSource.DataAnnotation));

            Assert.True(model.ShouldBeOwnedType(typeof(Details)));

            Assert.NotNull(
                modelBuilder.Entity(typeof(Product), ConfigurationSource.Explicit)
                .Owns(typeof(Details), nameof(Product.Details), ConfigurationSource.Convention));

            Assert.False(modelBuilder.Ignore(typeof(Details), ConfigurationSource.Convention));

            Assert.Equal(2, model.GetEntityTypes(typeof(Details)).Count);

            Assert.Equal(
                CoreStrings.ClashingOwnedEntityType(typeof(Details).Name),
                Assert.Throws <InvalidOperationException>(() => modelBuilder.Entity(typeof(Details), ConfigurationSource.Explicit)).Message);

            Assert.True(modelBuilder.Ignore(typeof(Details), ConfigurationSource.Explicit));

            Assert.False(model.ShouldBeOwnedType(typeof(Details)));

            Assert.NotNull(modelBuilder.Entity(typeof(Details), ConfigurationSource.Explicit));

            Assert.Empty(model.GetEntityTypes(typeof(Details)).Where(e => e.DefiningNavigationName != null));

            Assert.False(modelBuilder.Owned(typeof(Details), ConfigurationSource.Convention));

            Assert.Equal(
                CoreStrings.ClashingNonOwnedEntityType(typeof(Details).Name),
                Assert.Throws <InvalidOperationException>(() => modelBuilder.Owned(typeof(Details), ConfigurationSource.Explicit)).Message);
        }