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."); } }
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."); } }
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); }
//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); }
//Constructors #region MyDataContext public MyDataContext(System.Data.Entity.Core.EntityClient.EntityConnection connection) : base(connection, true) { }