EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

在非XAF应用程序中访问XAF应用程序数据

在某些情况下,您可能需要创建用于数据库维护的辅助应用程序,并使用对象空间查询主要XAF应用程序数据。本主题描述如何在常规的非XAF应用程序中创建和使用对象空间。

重点

我们不建议您在XAF应用程序中使用此处描述的方法。相反,请始终使用XafApplication.CreateObjectSpace方法或访问现有的对象空间

在非XAF应用程序中,您没有XafApplication对象来创建对象空间。但是,XafApplication本身不会创建对象空间。在内部,它使用对象空间提供程序设计用于为当前使用的ORM和在其重写的XafApplication.CreateDefaultObjectSpaceProvider方法中注册的那些对象创建对象空间。在非XAF应用程序中,您可以手动实例化对象空间提供程序。在基于XPO的应用程序中,为此目的请使用DevExpress.ExpressApp.Xpo.XPObjectSpaceProvider构造函数。在实体框架应用程序中,使用DevExpress.ExpressApp.EF.EFObjectSpaceProvider。然后,您可以调用提供程序的CreateObjectSpace方法来创建对象空间。

实体框架示例

您可以使用以下代码访问EFDemo应用程序的数据(通常安装到%PUBLIC%\ Documents \ DevExpress Demos 19.2 \ Components \ eXpressApp Framework \ EFDemoCodeFirst),并将部门列表写入标准输出流。

using DevExpress.ExpressApp.EF;
using DevExpress.ExpressApp;
using EFDemo.Module.Data;
// ...
class Program {
    static void Main(string[] args) {
        EFObjectSpaceProvider osProvider = new EFObjectSpaceProvider(typeof(EFDemoDbContext),
            "integrated security=True;multipleactiveresultsets=True;data source=(localdb)\\v11.0;initial catalog=EFDemo_");
        XafTypesInfo.Instance.RegisterEntity(typeof(Department));
        IObjectSpace objectSpace = osProvider.CreateObjectSpace();
        foreach (Department department in objectSpace.GetObjects<Department>()) {
           Console.WriteLine(department.Title   "\t"   department.Office);
        }
    }
}

XPO示例

在基于XPO的应用程序中,您还应该初始化Types Info Subsystem。下面的示例演示如何访问MainDemo应用程序的数据(通常安装到%PUBLIC%\ Documents \ DevExpress Demos 19.2 \ Components \ eXpressApp Framework \ MainDemo)并将部门列表写入标准输出流:

using DevExpress.ExpressApp.Xpo;
using DevExpress.ExpressApp;
using MainDemo.Module.BusinessObjects;
// ...
class Program {
    static void Main(string[] args) {
        XpoTypesInfoHelper.GetXpoTypeInfoSource();
        XafTypesInfo.Instance.RegisterEntity(typeof(Department));
        XPObjectSpaceProvider osProvider = new XPObjectSpaceProvider(
        @"integrated security=SSPI;pooling=false;data source=(localdb)\v11.0;initial catalog=MainDemo_", null);
        IObjectSpace objectSpace = osProvider.CreateObjectSpace();
        foreach (Department department in objectSpace.GetObjects<Department>()) {
            Console.WriteLine(department.Title   "\t"   department.Office);
        }
    }
}

如果需要用初始数据填充数据库,请使用DatabaseUpdater.Update方法,如下所示:

using DevExpress.ExpressApp.Updating;
// ...
DatabaseUpdater databaseUpdater = new DatabaseUpdater(
    osProvider, new ModuleBase[0], "", osProvider.ModuleInfoType);
databaseUpdater.Update();
相关文章

转载保留此链接,注明出处