示例#1
0
        public static void SetIsolationLevel(this System.Data.Entity.Core.EntityClient.EntityConnection connection, IsolationLevel isolationLevel)
        {
            var sqlConnection = connection.StoreConnection as System.Data.SqlClient.SqlConnection;

            if (sqlConnection != null)
            {
                sqlConnection.SetIsolationLevel(isolationLevel);
            }
            else
            {
                throw new NotSupportedException("Only EntityConnections to SqlConnections are supported so far.");
            }
        }
示例#2
0
        public static long?GetLastGeneratedIdentity(this System.Data.Entity.Core.EntityClient.EntityConnection connection)
        {
            var storeConnection = connection.StoreConnection;

            if (storeConnection is System.Data.SqlClient.SqlConnection)
            {
                return(((System.Data.SqlClient.SqlConnection)storeConnection).GetLastGeneratedIdentity());
            }
            else if (storeConnection is System.Data.OleDb.OleDbConnection)
            {
                return(((System.Data.OleDb.OleDbConnection)storeConnection).GetLastGeneratedIdentity());
            }
            else
            {
                throw new NotSupportedException("Only EntityConnections to SqlConnections and OleDbConnections are supported so far.");
            }
        }
示例#3
0
        public static System.Data.Entity.Core.EntityClient.EntityConnection GetEntityConnection(string connectionString)
        {
            //Console.WriteLine("connection is: " + System.Reflection.Assembly.GetExecutingAssembly());
            //var xx = new DbConfig();

            var instance = Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.Instance;



            //Console.WriteLine(instance.ToString());
            var workspace = new System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace(new List <String>()
            {
                @"res://*/Models.EntitiesModel.csdl",
                @"res://*/Models.EntitiesModel.ssdl",
                @"res://*/Models.EntitiesModel.msl"
            }
                                                                                       , new List <System.Reflection.Assembly>()
            {
                System.Reflection.Assembly.GetExecutingAssembly()
            });

            Console.WriteLine("creating connection");

            //var xxx = new Oracle.ManagedDataAccess.Client.OracleDataReader();

            //Oracle.ManagedDataAccess.Client.OracleDataReader reader;
            //reader.UseEdmMapping=

            var oracleConnection = new Oracle.ManagedDataAccess.Client.OracleConnection(connectionString);

            var connection = new System.Data.Entity.Core.EntityClient.EntityConnection(workspace, oracleConnection);

            connection.Open();

            return(connection);
        }
示例#4
0
        //public static System.Data.Entity.Core.EntityClient.EntityConnection GetEntityConnection(string connectionString, string modelName, System.Collections.Specialized.StringDictionary schemaMapping, List<string> skipNodeNames, List<string> skipEntityNames)
        public static System.Data.Entity.Core.EntityClient.EntityConnection GetEntityConnection(string connectionString, string modelName, Dictionary <string, string> entitiesSchemaMapping, Dictionary <string, string> methodsSchemaMapping)
        {
            Console.WriteLine("connection is2: " + System.Reflection.Assembly.GetExecutingAssembly());
            //var xx = new DbConfig();

            var instance = Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices.Instance;


            var csdl = Assembly.GetExecutingAssembly().GetManifestResourceStream(modelName + ".csdl");
            var msl  = Assembly.GetExecutingAssembly().GetManifestResourceStream(modelName + ".msl");
            var ssdl = Assembly.GetExecutingAssembly().GetManifestResourceStream(modelName + ".ssdl");


            //Console.WriteLine("ssdl:" + (new System.IO.StreamReader(ssdl)).ReadToEnd());
            //Console.WriteLine("-----------------");


            var storageXml = System.Xml.Linq.XElement.Load(ssdl);


            //Console.WriteLine(storageXml.Name.Namespace + "EntityType");

            var ns = storageXml.Name.Namespace;
            //XNamespace ab = "http://whatever-the-url-is"
            XNamespace ab = "http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator";


            var entities = storageXml.Element(ns + "EntityContainer").Elements(ns + "EntitySet")
                           .Where(item => item.Attribute("Schema") != null || item.Attribute(ab + "Schema") != null);


            //Console.WriteLine(qry.Count());
            //Console.WriteLine("-----------------");

            XAttribute schemaAttribute;
            XAttribute storeTypeAttribute;

            string newSchemaName;

            foreach (var entitySet in entities)
            {
                //Console.WriteLine("Name: " + entitySet.Name);

                //Console.WriteLine(entitySet.Name.LocalName);



                storeTypeAttribute = entitySet.Attribute(ab + "Type");

                schemaAttribute = null;

                //Console.WriteLine("Type: " + storeTypeAttribute.Value);

                switch (storeTypeAttribute.Value)
                {
                case "Tables":
                    schemaAttribute = entitySet.Attribute("Schema");

                    break;

                case "Views":
                    schemaAttribute = entitySet.Attribute(ab + "Schema");

                    break;
                }

                if (schemaAttribute != null)
                {
                    //Console.WriteLine(entitySet.Name);
                    //Console.WriteLine(entitySet.Value);

                    var nameAttribute = entitySet.Attribute("Name");
                    //Console.WriteLine(nameAttribute.Value);


                    if (entitiesSchemaMapping.ContainsKey(schemaAttribute.Value))
                    {
                        //Console.WriteLine(entitySet.Name);
                        newSchemaName = entitiesSchemaMapping[schemaAttribute.Value];

                        //Console.WriteLine("new schema name " + newSchemaName + " for: " + nameAttribute.Value);

                        //Console.WriteLine(entitySet.Name);
                        //Console.WriteLine("entitySet.Value:");
                        //Console.WriteLine(entitySet.Value);

                        if (string.IsNullOrWhiteSpace(newSchemaName))
                        {
                            schemaAttribute.Remove();
                        }
                        else
                        {
                            schemaAttribute.SetValue(newSchemaName);
                        }
                    }
                }

                switch (storeTypeAttribute.Value)
                {
                case "Tables":


                    break;

                case "Views":

                    var queryElement = entitySet.Element(ns + "DefiningQuery");

                    //(XElement)entitySet.FirstNode;
                    if (queryElement != null)
                    {
                        //Console.WriteLine("the query is: " + queryElement.Value);

                        queryElement.SetValue(queryElement.Value.Replace("\"" + schemaAttribute.Value + "\".", ""));

                        //var queryElement = (XElement)firstElement.FirstNode
                    }
                    //Console.WriteLine("view firstnode: " + firstElement.Name.LocalName);
                    //schemaAttribute = entitySet.FirstNode.nam

                    break;
                }
            }


            var functions = storageXml.Elements(ns + "Function").Where(item => item.Attribute("Schema") != null);

            foreach (var func in functions)
            {
                schemaAttribute = func.Attribute("Schema");

                if (methodsSchemaMapping.ContainsKey(schemaAttribute.Value))
                {
                    newSchemaName = methodsSchemaMapping[schemaAttribute.Value];

                    if (string.IsNullOrWhiteSpace(newSchemaName))
                    {
                        schemaAttribute.Remove();
                    }
                    else
                    {
                        schemaAttribute.SetValue(newSchemaName);
                    }
                }
            }



            var storageCollection    = new StoreItemCollection(new[] { storageXml.CreateReader() });
            var conceptualCollection = new EdmItemCollection(new[] { System.Xml.XmlReader.Create(csdl) });
            var mappingCollection    = new StorageMappingItemCollection(conceptualCollection, storageCollection, new[] { System.Xml.XmlReader.Create(msl) });


            var workspace = new MetadataWorkspace(() => conceptualCollection, () => storageCollection, () => mappingCollection);



            //Console.WriteLine(instance.ToString());


            Console.WriteLine("creating connection");

            //var xxx = new Oracle.ManagedDataAccess.Client.OracleDataReader();

            //Oracle.ManagedDataAccess.Client.OracleDataReader reader;
            //reader.UseEdmMapping=

            var oracleConnection = new Oracle.ManagedDataAccess.Client.OracleConnection(connectionString);

            var connection = new System.Data.Entity.Core.EntityClient.EntityConnection(workspace, oracleConnection);



            connection.Open();

            return(connection);
        }
示例#5
0
 //Constructors
 #region MyDataContext
 public MyDataContext(System.Data.Entity.Core.EntityClient.EntityConnection connection)
     : base(connection, true)
 {
 }