Silverlight 中 DomainService的手动扩充

Silverlight 中 DomainService的手动扩充,第1张

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

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

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

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

    public partial class DomainService1 : linqToEntitIEsDomainService<MyBookShopEntitIEs>

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

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

错误 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));        }

就会碰到这样的错误:

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

        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的手动扩充所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1064170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存