public void EDMX_can_be_written_from_DbModel()
        {
            var edm         = SimpleModelContext.CreateBuilder().Build(ProviderRegistry.Sql2008_ProviderInfo);
            var edmxBuilder = new StringBuilder();

            EdmxWriter.WriteEdmx(edm, XmlWriter.Create(edmxBuilder));

            SanityCheckEdmx(edmxBuilder);
        }
示例#2
0
        /// <summary>
        /// Creates the metadata files (CSDL/SSDL/MSL) for the SimpleModelContext.
        /// </summary>
        protected static void CreateMetadataFilesForSimpleModel()
        {
            if (!_metadataForSimpleModelCreated)
            {
                var builder = SimpleModelContext.CreateBuilder();
                ModelHelpers.WriteMetadataFiles(builder, @".\SimpleModel");

                using (var connection = SimpleConnection <SimpleModelContext>())
                {
                    new SimpleModelContext(connection, builder.Build(connection).Compile()).Database.Initialize(false);
                }

                _metadataForSimpleModelCreated = true;
            }
        }
        public void Edmx_can_be_written_from_a_context_created_using_DbCompiledModel()
        {
            var edmxBuilder = new StringBuilder();
            var model       = SimpleModelContext.CreateBuilder().Build(ProviderRegistry.Sql2008_ProviderInfo).Compile();

            using (var context = new SimpleModelContext(model))
            {
                EdmxWriter.WriteEdmx(context, XmlWriter.Create(edmxBuilder));

                // Quick sanity check that the context is still usable.
                Assert.NotNull(context.Products.Find(1));
            }

            SanityCheckEdmx(edmxBuilder);
        }
示例#4
0
        public void CreateObjectContext_loads_o_space_metadata()
        {
            var builder = SimpleModelContext.CreateBuilder();

            using (var connection = SimpleConnection <SimpleModelContext>())
            {
                using (var context = builder.Build(connection).Compile().CreateObjectContext <ObjectContext>(connection))
                {
                    var objectItemCollection =
                        (ObjectItemCollection)context.MetadataWorkspace.GetItemCollection(DataSpace.OSpace);
                    var ospaceTypes = context.MetadataWorkspace.GetItems <EntityType>(DataSpace.OSpace);
                    Assert.True(ospaceTypes.Any(t => objectItemCollection.GetClrType(t) == typeof(Product)));
                    Assert.True(ospaceTypes.Any(t => objectItemCollection.GetClrType(t) == typeof(Category)));
                }
            }
        }
示例#5
0
        public void Existing_connection_used_with_an_existing_model_is_disposed_after_use_if_DbContext_owns_connection()
        {
            var connection = SimpleConnection <SimpleModelContext>();

            var model = SimpleModelContext.CreateBuilder().Build(connection).Compile();

            var disposed = false;

            connection.Disposed += (_, __) => disposed = true;

            using (var context = new DbContext(connection, model, contextOwnsConnection: true))
            {
                context.Set <Product>().FirstOrDefault();
            }

            Assert.True(disposed);
        }
示例#6
0
        private void Model_hash_can_be_obtained_from_Code_First_context_when_using_existing_model(bool initializeContext)
        {
            var model = SimpleModelContext.CreateBuilder().Build(ProviderRegistry.Sql2008_ProviderInfo).Compile();

            using (var context = new SimpleModelContext(model))
            {
                if (initializeContext)
                {
                    context.Database.Initialize(force: false);
                }

#pragma warning disable 612,618
                var hash = EdmMetadata.TryGetModelHash(context);
#pragma warning restore 612,618

                Assert.NotNull(hash);
            }
        }
示例#7
0
        protected static TContext CreateContext <TContext>(
            DbContextConstructorArgumentType arguments,
            string providerName = "System.Data.SqlClient")
            where TContext : DbContext
        {
            DbConnection connection = null;

            if (arguments == DbContextConstructorArgumentType.Connection
                ||
                arguments == DbContextConstructorArgumentType.ConnectionAndDbCompiledModel)
            {
                if (providerName == "System.Data.SqlClient")
                {
                    connection = SimpleConnection <TContext>();
                }
                else if (providerName == "System.Data.SqlServerCe.4.0")
                {
                    connection = SimpleCeConnection <TContext>();
                }
                else
                {
                    throw new ArgumentException("Invalid provider specified, " + providerName);
                }
            }

            string connectionString = null;

            if (arguments == DbContextConstructorArgumentType.ConnectionString
                ||
                arguments == DbContextConstructorArgumentType.ConnectionStringAndDbCompiledModel)
            {
                if (providerName == "System.Data.SqlClient")
                {
                    connectionString = SimpleConnectionString <TContext>();
                }
                else if (providerName == "System.Data.SqlServerCe.4.0")
                {
                    connectionString = SimpleCeConnectionString <TContext>();
                }
                else
                {
                    throw new ArgumentException("Invalid provider specified, " + providerName);
                }
            }

            var providerInfo
                = (providerName == "System.Data.SqlServerCe.4.0")
                      ? ProviderRegistry.SqlCe4_ProviderInfo
                      : ProviderRegistry.Sql2008_ProviderInfo;

            TContext context = null;

            switch (arguments)
            {
            case DbContextConstructorArgumentType.Parameterless:
                context = (TContext)Activator.CreateInstance(typeof(TContext));
                break;

            case DbContextConstructorArgumentType.DbCompiledModel:
                context =
                    (TContext)
                    Activator.CreateInstance(
                        typeof(TContext),
                        SimpleModelContext.CreateBuilder().Build(providerInfo).Compile());
                break;

            case DbContextConstructorArgumentType.Connection:
                context = (TContext)Activator.CreateInstance(typeof(TContext), connection, false);
                break;

            case DbContextConstructorArgumentType.ConnectionString:
                context = (TContext)Activator.CreateInstance(typeof(TContext), connectionString);
                break;

            case DbContextConstructorArgumentType.ConnectionAndDbCompiledModel:
                context =
                    (TContext)
                    Activator.CreateInstance(
                        typeof(TContext), connection,
                        SimpleModelContext.CreateBuilder().Build(connection).Compile(), false);
                break;

            case DbContextConstructorArgumentType.ConnectionStringAndDbCompiledModel:
                context =
                    (TContext)
                    Activator.CreateInstance(
                        typeof(TContext), connectionString,
                        SimpleModelContext.CreateBuilder().Build(providerInfo).Compile());
                break;

            default:
                throw new ArgumentException("Invalid DbContext constructor arguments " + arguments);
            }

            return(context);
        }