DevExpress XPO使用WCF数据源

XPO(eXpress Persistent Objects)DevExpress开源的ORM框架,是对象和关系数据库之间的桥梁。使用XPO可以大大简化对数据库操作。

XPO还支持WCF - 使用IDataStore, ICachedDataStoreISerializableObjectLayer 提供者, 这样就不直接连接数据库,而可通过WCF services获取数据对象。 

例如:在企业环境下,核心数据库并不希望对不同的业务系统开放。此时使用编写一个WCF服务作为应用服务器,就可以避免数据库直接暴露出来,同时还可以在应用服务器端实现统一的认证管理。

具体实现:

步骤1:编写WCF服务 

创建一个“WCF服务应用程序”,引用DevExpress.Data.V18.2和DevExpress.Xpo.V18.2,修改.svc文件。

 public class ExamWcfService :  DataStoreService
    {
        public static IDataStore DataStore;

        static ExamWcfService()
        {

           
            string dbs = ConfigurationManager.AppSettings["dbserver"];
           string user = ConfigurationManager.AppSettings["user"];
            string password = ConfigurationManager.AppSettings["password"];
            string db = ConfigurationManager.AppSettings["db"];
           
            string connectionString = MSSqlConnectionProvider.GetConnectionString(dbs,user,password,db);
           
            DataStore = XpoDefault.GetConnectionProvider(connectionString, AutoCreateOption.SchemaOnly);
        }

        public ExamWcfService() : base(DataStore)
        {

        }
        
    }

说明:

(1)从DataStoreService继承。

(2)编译后,将WCF服务应用部署到IIS上。

(3)此时WCF服务作为数据提供者。

步骤2:创建一个类库项目,用于产生XPO实体类

引用DevExpress.Data.V18.2和DevExpress.Xpo.V18.2。

利用ORM Data Model向导,直接根据数据表产生XPO实体类。编译产生实体类DLL文件。

步骤3:编写客户端,从WCF获取数据(XPO对象)

引用步骤2创建的实体类DLL,引用DevExpress.Data.V18.2和DevExpress.Xpo.V18.2。

 string connstr = "http://10.127.0.15:8080/wcf/ExamWcfService.svc";
 XpoDefault.DataLayer = XpoDefault.GetDataLayer(connstr,AutoCreateOption.SchemaOnly);
       
 Customer cus = new Customer(XpoDefault.Session);
 cus.CompanyName = "scetc";
 cus.Save();


  using (UnitOfWork uow = new UnitOfWork())
     {
           using (XPCollection<Admins> customers = new XPCollection<Admins>(uow))
                {
                    foreach (Admins customer in customers)
                    {
                        Console.WriteLine("Company Name = {0}; ContactName = {1}", customer.Admin, customer.Classroom);
                    }
                }
   }

说明:传统XPO的数据提供者为不同类型的数据库。如访问MSSQL服务器的连接字符串写法


string connstr=MSSqlConnectionProvider.GetConnectionString(sqlserverip,username,password,db);
发布了22 篇原创文章 · 获赞 4 · 访问量 4849

猜你喜欢

转载自blog.csdn.net/guo1wu3shi4/article/details/90511624