public DataReaderInspectorDataReader(DbDataReader wrappedDataReader, IResultSetComposer composer)
 {
     this.wrappedDataReader = wrappedDataReader;
     this.composer          = composer;
     this.commitNext        = false;
     this.needCommit        = false;
 }
 public DataReaderInspectorDataReader(DbDataReader wrappedDataReader, IResultSetComposer composer)
 {
     this.wrappedDataReader = wrappedDataReader;
     this.composer = composer;
     this.commitNext = false;
     this.needCommit = false;
 }
示例#3
0
        protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
        {
            IResultSetComposer            composer   = null;
            DataReaderInspectorConnection connection = this.Connection as DataReaderInspectorConnection;

            if (connection != null)
            {
                composer = connection.Composer;
            }

            if (composer == null)
            {
                throw new InvalidOperationException();
            }

            return(new DataReaderInspectorDataReader(base.ExecuteDbDataReader(behavior), composer));
        }
示例#4
0
 private EntityConnection CreateInspectedFakeConnection(IResultSetComposer composer)
 {
     return(EntityConnectionHelper.CreateInspectedFakeEntityConnection(this.connectionString, composer, this.dataLoader));
 }
示例#5
0
 private EntityConnection CreateInspectedStoreConnection(IResultSetComposer composer)
 {
     return(EntityConnectionHelper.CreateInspectedEntityConnection(this.connectionString, composer));
 }
示例#6
0
        private static EntityConnection CreateInspectedFakeEntityConnection(string entityConnectionString, IResultSetComposer resultSetComposer, bool createFake, IDataLoader dataLoader)
        {
            EntityConnectionStringBuilder connectionString = new EntityConnectionStringBuilder(entityConnectionString);

            if (!string.IsNullOrEmpty(connectionString.Name))
            {
                string resolvedConnectionString = ConfigurationManager.ConnectionStrings[connectionString.Name].ConnectionString;
                connectionString = new EntityConnectionStringBuilder(resolvedConnectionString);
            }

            List <XElement> csdl = new List <XElement>();
            List <XElement> ssdl = new List <XElement>();
            List <XElement> msl  = new List <XElement>();

            MetadataWorkspaceHelper.ParseMetadata(connectionString.Metadata, csdl, ssdl, msl);

            foreach (XElement ssdlFile in ssdl)
            {
                XAttribute providerAttribute = ssdlFile.Attribute("Provider");
                XAttribute providerManifestTokenAttribute = ssdlFile.Attribute("ProviderManifestToken");

                if (createFake)
                {
                    EffortProviderConfiguration.VerifyProvider();
                    UniversalStorageSchemaModifier.Instance.Modify(ssdlFile, new EffortProviderInformation());
                }

                string oldProviderInvariantName = providerAttribute.Value;
                string oldProviderManifestToken = providerManifestTokenAttribute.Value;

                providerAttribute.Value = DataReaderInspectorProviderConfiguration.ProviderInvariantName;
                providerManifestTokenAttribute.Value = string.Format("{0};{1}", oldProviderInvariantName, oldProviderManifestToken);
            }

            MetadataWorkspace convertedWorkspace = MetadataWorkspaceHelper.CreateMetadataWorkspace(csdl, ssdl, msl);

            DbConnection storeConnection = null;

            if (createFake)
            {
                storeConnection = Effort.DbConnectionFactory.CreateTransient(dataLoader);
            }
            else
            {
                storeConnection = ProviderHelper.CreateConnection(connectionString.Provider);
                storeConnection.ConnectionString = connectionString.ProviderConnectionString;
            }

            DbConnectionWrapper inspectorConnection = new DataReaderInspectorConnection(resultSetComposer);

            inspectorConnection.WrappedConnection = storeConnection;

#if !EFOLD
            EntityConnection entityConnection =
                new EntityConnection(convertedWorkspace, inspectorConnection, true);
#else
            EntityConnection entityConnection =
                new EntityConnection(convertedWorkspace, inspectorConnection);

            FieldInfo owned =
                typeof(EntityConnection)
                .GetField(
                    "_userOwnsStoreConnection",
                    BindingFlags.Instance | BindingFlags.NonPublic);

            owned.SetValue(entityConnection, false);
#endif

            if (createFake)
            {
                using (ObjectContext objectContext = new ObjectContext(entityConnection))
                {
                    if (!objectContext.DatabaseExists())
                    {
                        objectContext.CreateDatabase();
                    }
                }
            }

            return(entityConnection);
        }
示例#7
0
 public static EntityConnection CreateInspectedEntityConnection(string entityConnectionString, IResultSetComposer resultSetComposer)
 {
     return(CreateInspectedFakeEntityConnection(entityConnectionString, resultSetComposer, false, null));
 }
示例#8
0
 public static EntityConnection CreateInspectedFakeEntityConnection(string entityConnectionString, IResultSetComposer resultSetComposer, IDataLoader dataLoader)
 {
     return(CreateInspectedFakeEntityConnection(entityConnectionString, resultSetComposer, true, dataLoader));
 }
 public DataReaderInspectorConnection(IResultSetComposer composer)
 {
     this.composer = composer;
 }
 public DataReaderInspectorConnection(IResultSetComposer composer)
 {
     this.composer = composer;
 }
        private static EntityConnection CreateInspectedFakeEntityConnection(string entityConnectionString, IResultSetComposer resultSetComposer, bool createFake, IDataLoader dataLoader)
        {
            EntityConnectionStringBuilder connectionString = new EntityConnectionStringBuilder(entityConnectionString);

            if (!string.IsNullOrEmpty(connectionString.Name))
            {
                string resolvedConnectionString = ConfigurationManager.ConnectionStrings[connectionString.Name].ConnectionString;
                connectionString = new EntityConnectionStringBuilder(resolvedConnectionString);
            }

            List<XElement> csdl = new List<XElement>();
            List<XElement> ssdl = new List<XElement>();
            List<XElement> msl = new List<XElement>();

            MetadataWorkspaceHelper.ParseMetadata(connectionString.Metadata, csdl, ssdl, msl);

            foreach (XElement ssdlFile in ssdl)
            {
                XAttribute providerAttribute = ssdlFile.Attribute("Provider");
                XAttribute providerManifestTokenAttribute = ssdlFile.Attribute("ProviderManifestToken");

                if (createFake)
                {
                    EffortProviderConfiguration.VerifyProvider();
                    UniversalStorageSchemaModifier.Instance.Modify(ssdlFile, new EffortProviderInformation());
                }

                string oldProviderInvariantName = providerAttribute.Value;
                string oldProviderManifestToken = providerManifestTokenAttribute.Value;

                providerAttribute.Value = DataReaderInspectorProviderConfiguration.ProviderInvariantName;
                providerManifestTokenAttribute.Value = string.Format("{0};{1}", oldProviderInvariantName, oldProviderManifestToken);
            }

            MetadataWorkspace convertedWorkspace = MetadataWorkspaceHelper.CreateMetadataWorkspace(csdl, ssdl, msl);

            DbConnection storeConnection = null;

            if (createFake)
            {
                storeConnection = Effort.DbConnectionFactory.CreateTransient(dataLoader);
            }
            else
            {
                storeConnection = ProviderHelper.CreateConnection(connectionString.Provider);
                storeConnection.ConnectionString = connectionString.ProviderConnectionString;
            }
            
            DbConnectionWrapper inspectorConnection = new DataReaderInspectorConnection(resultSetComposer);
            inspectorConnection.WrappedConnection = storeConnection;

#if !EFOLD
            EntityConnection entityConnection =
                new EntityConnection(convertedWorkspace, inspectorConnection, true);
#else
            EntityConnection entityConnection = 
                new EntityConnection(convertedWorkspace, inspectorConnection);

            FieldInfo owned = 
                typeof(EntityConnection)
                .GetField(
                    "_userOwnsStoreConnection", 
                    BindingFlags.Instance | BindingFlags.NonPublic);

            owned.SetValue(entityConnection, false);
#endif

            if (createFake)
            {
                using (ObjectContext objectContext = new ObjectContext(entityConnection))
                {
                    if (!objectContext.DatabaseExists())
                    {
                        objectContext.CreateDatabase();
                    }
                }
            }

            return entityConnection;
        }
 public static EntityConnection CreateInspectedEntityConnection(string entityConnectionString, IResultSetComposer resultSetComposer)
 {
     return CreateInspectedFakeEntityConnection(entityConnectionString, resultSetComposer, false, null);
 }
 public static EntityConnection CreateInspectedFakeEntityConnection(string entityConnectionString, IResultSetComposer resultSetComposer, IDataLoader dataLoader)
 {
     return CreateInspectedFakeEntityConnection(entityConnectionString, resultSetComposer, true, dataLoader);
 }