silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 中 DomainService的手动扩充大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

对于Silverlight中添加Domainservice的对话框只能选择一次,如果数据库表增加就没有办法进行操作,只能将原有的Domainservice删除后重新添加,本教程就是帮你解决此问题,我们选看一下Domainservice添加界面如下 界面中没有选择的实体是不能进行操作的,我们可以通过手动的方式将这些实体添加到Domainservice中供Silverlight操作,这样我们就可以根据

对于Silverlight中添加Domainservice的对话框只能选择一次,如果数据库增加就没有办法进行操作,只能将原有的Domainservice删除后重新添加,本教程就是帮你解决此问题,我们选看一下Domainservice添加界面如下

@H_301_10@

界面中没有选择的实体是不能进行操作的,我们可以通过手动的方式将这些实体添加到Domainservice中供Silverlight操作,这样我们就可以根据自己需要进行灵活操作。

先将生成的Domainservice1类改为局部类

    public partial class Domainservice1 : LinqToEntitiesDomainservice<MyBookShopEntities>

然后自己创建一个 Domainservice1的局部类,就可以进行手动添加操作

1.必须添加一个查询操作然后才能添加其它操作,如果不添加查询操作编译时就会出现如下错误:

Silverlight 中 DomainService的手动扩充

错误 1 域方法updateUserRoles”的参数“data”必须是 Domainservice 公开的实体类型。该实体类可以直接在查询操作中公开,也可以通过关联间接公开。

例如我们添加UserRoles的查询操作,代码如下:

        public IQueryable<UserRoles> GetUserRoles()
        {
            return this.ObjectContext.UserRoles;
        }

然后就可以添加其它的查询方法,例如条件查询: 

        public IQueryable<UserRoles> GetUserRolesByName(String Name)
        {
            return this.ObjectContext.UserRoles.Where(r=>r.Name.StartsWith(Name);
        }

分页查询:(分页要先排序才可以)

        public IQueryable<Books> GetBooksByPage(int pageIndex,int pageSizE)
        {
            return this.ObjectContext.books.OrderBy(b=>b.Id).Skip(pageIndex * pageSizE).Take(pageSizE);
        }

在Silverlight中调用请参前面的文章

2.添加增加方法代码如下:

        public void InsertUserRoles(UserRoles data)
        {
            if ((data.EntityState != EntityState.Detached))
            {
                this.ObjectContext.objectStateManager.ChangeObjectState(data,EntityState.Added);
            }
            else
            {
                this.ObjectContext.UserRoles.AddObject(data);
            }
        }

3.添加更新操作,代码如下:

        public void updateUserRoles(UserRoles data)
        {
            this.ObjectContext.UserRoles.AttachAsModified(data,this.ChangeSet.GetOriginal(data));
        }

如果要添加自定义的更新方法就需要自己写一个方法,这个方法有如下要求:

a.方法返回值不要用void,这要不方便使用OptionHander调用(参照前面的文章)

例如更新代码如下:

        public void updateUserRolesEx(UserRoles data)
        {
            var old = this.ObjectContext.UserRoles.Where(r => r.Id == data.Id).Single();
            old.Name = data.Name;
            this.ObjectContext.UserRoles.AttachAsModified(old,this.ChangeSet.GetOriginal(old));
        }

就会碰到这样的错误:

Silverlight 中 DomainService的手动扩充

因此这个方法需要改成如下格式:

        public bool updateUserRolesEx(UserRoles data)
        {
            try
            {
                var old = this.ObjectContext.UserRoles.Where(r => r.Id == data.Id).Single();
                old.Name = data.Name;
                this.ObjectContext.UserRoles.AttachAsModified(old,this.ChangeSet.GetOriginal(old));
                return true;
            }
            catch 
            {
                return false;
            }
        }

Silverlight中UserRoleBLL调用代码如下:

        public static void updateUserRolesEx(OptionHander oh,UserRoles rolE)
        {
            var m = DB.db.updateUserRolesEx(rolE);
            m.Completed += (a,b) => oh(m.value);
        }

4.删除操作

        public void deleteUserRoles(UserRoles data)
        {
            if ((data.EntityState != EntityState.Detached))
            {
                this.ObjectContext.objectStateManager.ChangeObjectState(data,EntityState.deleted);
            }
            else
            {
                this.ObjectContext.UserRoles.Attach(data);
                this.ObjectContext.UserRoles.deleteObject(data);
            }
        }

扩展删除方法:

        public bool deleteUserRoleById(int id)
        {
            try
            {
                var old = this.ObjectContext.UserRoles.Where(r => r.Id == id).Single();
                deleteUserRoles(old);
                return true;
            }
            catch 
            {
                return false;
            }
        }

调用前面的文章

大佬总结

以上是大佬教程为你收集整理的Silverlight 中 DomainService的手动扩充全部内容,希望文章能够帮你解决Silverlight 中 DomainService的手动扩充所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。