使用Silverlight + DomainService进行开发时我们可以在Silverlight项目中创建一个BLL层用于Silverlight调用如下图所示
在Silverlight端进行调用要采用异步调用,因此在这中间加入了一些Lambda表达式进行简化操作
为了实现这种机制在Sliverlight项目中做了这么几项工作
1.定义用于执行增加,修改和删除操作的回发处理委托
- public delegate void OptionHander(bool hasError);
参数只有一个:hasError用于表示从服务器执行操作是否有错误
2.编写BLL代码
我这里写了一个DB类用于处理DomainService对象,代码如下:
- public class DB
- {
- private static DomainService1 _db;
- public static DomainService1 db
- {
- get
- {
- if (_db == null) _db = new DomainService1();
- return _db;
- }
- }
- }
基于前面的委托我们进行相关操作,我这用了一个简单表UserRoles表进行操作,UserRoles只有两个字段Id和Name
2.1增加操作
- public class RoleBLL
- {
- public static void AddRole(UserRoles role,OptionHander ev)
- {
- var db = DB.db;
- db.UserRoles.Add(role);
- db.SubmitChanges((ex) =>{ev(ex.HasError);}, null);
- }
- }
2.2修改操作
- public class RoleBLL
- {
- public static void UpdateRole( OptionHander ev)
- {
- var db = DB.db;
- db.SubmitChanges((ex) =>{ev(ex.HasError);}, null);
- }
- }
2.3删除操作
- public class RoleBLL
- {
- public static void DeleteRole(UserRoles role, OptionHander ev)
- {
- var db = DB.db;
- db.UserRoles.Remove(role);
- db.SubmitChanges((ex) =>{ev(ex.HasError);}, null);
- }
- }
可以看到非常的简单,只是进行了相关的封装
3.表示层调用
3.1增加调用
- UserRoles ur = new UserRoles{Name="haha"};
- RoleBLL.AddRole(ur, err => {
- if(!err){
- MessageBox.Show("增加成功!");
- }else{
- MessageBox.Show("增加失败!");
- }
- });
3.2修改调用
- UserRoles ur =....
- RoleBLL.UpdateRole(ur, err => {
- if(!err){
- MessageBox.Show("修改成功!");
- }else{
- MessageBox.Show("修改失败!");
- }
- });
3.3删除调用
- UserRoles ur =.....
- RoleBLL.DeleteRole(ur, err => {
- if(!err){
- MessageBox.Show("删除成功!");
- }else{
- MessageBox.Show("删除失败!");
- }
- });