[Fact] // CodePlex 2320
        public void Model_is_available_in_DatabaseExists()
        {
            WrappingAdoNetProvider <SqlClientFactory> .WrapProviders();

            var log = WrappingAdoNetProvider <SqlClientFactory> .Instance.Log;

            log.Clear();

            using (var context = new EfLevelBlogContext())
            {
                context.Database.Exists();
            }

            var rawDetails     = (object[])log.Where(i => i.Method == "DbDatabaseExists").Select(i => i.RawDetails).Single();
            var itemCollection = (StoreItemCollection)rawDetails[1];

            Assert.Equal(
                new[] { "Blog", "Post" },
                itemCollection.OfType <EntityType>().Select(e => e.Name).OrderBy(n => n).ToArray());
        }
コード例 #2
0
        public void Simple_query_and_update_works_with_wrapping_provider_setup_at_EF_level_only()
        {
            WrappingAdoNetProvider <SqlClientFactory> .WrapProviders();

            var log = WrappingAdoNetProvider <SqlClientFactory> .Instance.Log;

            log.Clear();

            using (var context = new EfLevelBlogContext())
            {
                var blog = context.Blogs.Single();
                Assert.Equal("Half a Unicorn", blog.Title);
                Assert.Equal("Wrap it up...", blog.Posts.Single().Title);

                using (context.Database.BeginTransaction())
                {
                    blog.Posts.Add(
                        new Post
                    {
                        Title = "Throw it away..."
                    });
                    Assert.Equal(1, context.SaveChanges());

                    Assert.Equal(
                        new[] { "Throw it away...", "Wrap it up..." },
                        context.Posts.AsNoTracking().Select(p => p.Title).OrderBy(t => t));
                }
            }

            // Sanity check that the wrapping provider really did get used
            var methods = log.Select(i => i.Method).ToList();

            Assert.Contains("ExecuteReader", methods);
            Assert.Contains("ExecuteNonQuery", methods);
            Assert.Contains("Open", methods);
            Assert.Contains("Close", methods);
            Assert.Contains("Commit", methods);
            Assert.Contains("Generate", methods);
        }
コード例 #3
0
        public void Correct_services_are_returned_when_wrapping_setup_at_EF_level_only()
        {
            WrappingAdoNetProvider <SqlClientFactory> .WrapProviders();

            Assert.Same(
                WrappingAdoNetProvider <SqlClientFactory> .Instance,
                DbConfiguration.DependencyResolver.GetService <DbProviderFactory>(SqlClientInvariantName));

            Assert.Same(
                WrappingEfProvider <SqlClientFactory, SqlProviderServices> .Instance,
                DbConfiguration.DependencyResolver.GetService <DbProviderServices>(SqlClientInvariantName));

            Assert.Equal(
                SqlClientInvariantName,
                DbConfiguration.DependencyResolver.GetService <IProviderInvariantName>(WrappingAdoNetProvider <SqlClientFactory> .Instance).Name);

            Assert.Same(
                WrappingAdoNetProvider <SqlClientFactory> .Instance,
                DbConfiguration.DependencyResolver.GetService <IDbProviderFactoryResolver>()
                .ResolveProviderFactory(new WrappingConnection <SqlClientFactory>(new SqlConnection())));

            // Should still report what is in the providers table
            Assert.Same(SqlClientFactory.Instance, DbProviderFactories.GetFactory(SqlClientInvariantName));
        }