using DevExpress.ExpressApp; using DevExpress.ExpressApp.Xpo; using DevExpress.Xpo; using System; using System.Linq; public static class XpoHelper { private static System.Reflection.Assembly[] _assemblies; public static void Register(params System.Reflection.Assembly[] assemblies) { _assemblies = assemblies; } public static Session GetNewSession() { var session = new Session(DataLayer); session.TrackPropertiesModifications = false; return session; } public static UnitOfWork GetNewUnitOfWork() { return new UnitOfWork(DataLayer); } public static XPObjectSpaceProvider ObjectSpaceProvider { get; private set; } public static IObjectSpace DefaultObjectSpace { get; private set; } public static IDataLayer DataLayer { get; private set; } public static IDataLayer CreateDataLayer(string connectionString) { if (_assemblies == null) throw new Exception("XpoHelper.types is null. Please use XpoHelper.Register before using any other function from the XpoHelper class."); const int maxConnections = 3; var connectionPoolString = XpoDefault.GetConnectionPoolString(connectionString, maxConnections); var dataStoreProvider = new ConnectionStringDataStoreProvider(connectionPoolString, true); var allTypes = _assemblies.SelectMany(a => a.GetTypes().Where(x => typeof(XPBaseObject).IsAssignableFrom(x))).ToList(); var xpoTypeInfoSource = XpoTypesInfoHelper.GetXpoTypeInfoSource(); allTypes.ForEach(x => xpoTypeInfoSource.RegisterEntity(x)); var typesInfo = XpoTypesInfoHelper.GetTypesInfo(); ObjectSpaceProvider = new XPObjectSpaceProvider(dataStoreProvider, typesInfo, xpoTypeInfoSource, true); DefaultObjectSpace = ObjectSpaceProvider.CreateObjectSpace(); DataLayer = ObjectSpaceProvider.DataLayer; return DataLayer; } }
821600cookie-checkDevExpress XpoHelper Connection Register Types