使用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("刪除失敗!");
}
});