using System;
using System.Configuration;
using System.Linq;
using System.Reflection;
using System.Web;
namespace CPE.App.Web.Models {
public partial class CPEWebDataContext {
public static CPEWebDataContext Context() {
return new CPEWebDataContext();
}
public static CPEWebDataContext GetContext() {
var connectionString = ConfigurationManager.ConnectionStrings["CPE.Data"].ConnectionString;
try {
var context = HttpContext.Current;
var address = context.Request.UserHostAddress;
if (address.StartsWith("192.") || address.StartsWith("10.211") || address == "::1") {
connectionString = ConfigurationManager.ConnectionStrings["CPE.Data.Local"].ConnectionString;
}
} catch (Exception e) {
Console.WriteLine(e);
}
return GetContext(connectionString); //DONE DEPLOY CHANGE back to CPE.DATA
}
///
/// Returns the DataContext shared for the current request (or creates one if necessary)
///
/// The connection string to use.
public static CPEWebDataContext GetContext(string connectionString) {
if(HttpContext.Current == null) {
return new CPEWebDataContext(connectionString);
}
if(HttpContext.Current.Items.Contains("MUDataContext")) {
return HttpContext.Current.Items["MUDataContext"] as CPEWebDataContext;
}
var context = new CPEWebDataContext(connectionString);
HttpContext.Current.Items.Add("MUDataContext", context);
return context;
}
public static CPEWebDataContext Context(IQueryable queryable) {
var field = queryable.GetType()
.GetField("context", BindingFlags.NonPublic | BindingFlags.Instance);
return field.GetValue(queryable) as CPEWebDataContext;
}
}
}