大佬教程收集整理的这篇文章主要介绍了Silverlight 中 DomainService的手动扩充,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对于Silverlight中添加Domainservice的对话框只能选择一次,如果数据库表增加就没有办法进行操作,只能将原有的Domainservice删除后重新添加,本教程就是帮你解决此问题,我们选看一下Domainservice添加界面如下
@H_301_10@
界面中没有选择的实体是不能进行操作的,我们可以通过手动的方式将这些实体添加到Domainservice中供Silverlight操作,这样我们就可以根据自己需要进行灵活操作。
public partial class Domainservice1 : LinqToEntitiesDomainservice<MyBookShopEntities>
然后自己创建一个 Domainservice1的局部类,就可以进行手动添加操作
1.必须添加一个查询操作然后才能添加其它操作,如果不添加查询操作编译时就会出现如下错误:
错误 1 域方法“updateUserRoles”的参数“data”必须是 Domainservice 公开的实体类型。该实体类型可以直接在查询操作中公开,也可以通过关联间接公开。
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); }
public void InsertUserRoles(UserRoles data) { if ((data.EntityState != EntityState.Detached)) { this.ObjectContext.objectStateManager.ChangeObjectState(data,EntityState.Added); } else { this.ObjectContext.UserRoles.AddObject(data); } }
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的手动扩充所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。