Silverlight中使用数据服务对数据库CRUD
1. 建立一个数据模型
注意:模型对应的表一定要有主键,否则,建立时将不会成功。
2.建立一个数据服务
public class WebDataService1 : DataService<myDBEntitIEs>
{
// 仅调用此方法一次以初始化涉及服务范围的策略。
public static voID InitializeService(IDataServiceConfiguration config)
{
// Todo: 设置规则以指明哪些实体集和服务 *** 作是可见的、可更新的,等等。
config.SetEntitySetAccessRule(@H_419_136@"*",EntitySetRights.All);
config.SetServiceOperationAccessRule(@H_419_136@"*",ServiceOperationRights.All);
}
[WebGet]
public Iqueryable<tabA> getTabA(string a)
{
var v = CurrentDataSource.tabA.Where(p => p.a == a);
return v;
}
[WebInvoke]
public Iqueryable<tabX> getTabX(string x)
{
var v = CurrentDataSource.tabX.Where(p => p.x == x);
return v;
}
[queryInterceptor(@H_419_136@"tabX")]
public System.linq.Expressions.Expression<Func<tabX,bool>> query_tabX()
{
return p => p.z != @H_419_136@"wwxxdd"; //为真表示允许查询
}
[ChangeInterceptor(@H_419_136@"tabX")]
public voID change_tabX(tabX en,UpdateOperations operation)
{
//-
if (operation == UpdateOperations.Add)
{
if (string.IsNullOrEmpty(en.y))
{
//如果[y]为空的处理代码
}
}
//-
if (operation == UpdateOperations.Change)
{
}
//-
if (operation == UpdateOperations.Delete)
{
}
}
@H_665_502@} @H_665_502@ @H_665_502@3.设置xaml页面<StackPanel x:name="spTool" >
<data:DataGrID x:name="dg"></data:DataGrID>
<button x:name="btnRetrivebyWeb" Content="WebClIEnt方式加载数据" WIDth="200" />
<button x:name="btnRetriveByService" Content="DataServiceContext方式加载数据" WIDth="200" />
<button x:name="btnCreate" Content="添加" WIDth="200" />
<button x:name="btnUpdate" Content="修改" WIDth="200" />
<button x:name="btnDelete" Content="删除" WIDth="200" />
@H_665_502@ </StackPanel> @H_665_502@ @H_665_502@ @H_665_502@4.在xaml页面对应的cs文件中添加代码 @H_665_502@public MainPage()
{
InitializeComponent();
this.spTool.Loaded += new RoutedEventHandler(spTool_Loaded);
this.btnRetrivebyWeb.Click += new RoutedEventHandler(btnRetrivebyWeb_Click);
this.btnRetriveByService.Click += new RoutedEventHandler(btnRetriveByService_Click);
this.btnCreate.Click += new RoutedEventHandler(btnCreate_Click);
this.btnUpdate.Click += new RoutedEventHandler(btnUpdate_Click);
this.btnDelete.Click += new RoutedEventHandler(btnDelete_Click);
@H_665_502@ } @H_665_502@
#region WebClIEnt方式加载数据
private voID btnRetrivebyWeb_Click(object sender,RoutedEventArgs e)
{
Uri uri = new Uri(@H_419_136@"http://localhost:8081/WebDataService1.svc/tabA");
WebClIEnt clIEnt = new WebClIEnt();
clIEnt.OpenReadCompleted += new OpenReadCompletedEventHandler(clIEnt_completed);
clIEnt.OpenReadAsync(uri);
}
voID clIEnt_completed(object sender,OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
XmlReader reader = XmlReader.Create(e.Result);
Xdocument ls = Xdocument.Load(reader);
Xnamespace xmlns = @H_419_136@"http://www.w3.org/2005/Atom";
Xnamespace d = @H_419_136@"http://schemas.microsoft.com/ado/2007/08/dataservices";
Xnamespace m = @H_419_136@"http://schemas.microsoft.com/ado/2007/08/dataservices/Metadata";
var List = from x in ls.Descendants(xmlns + @H_419_136@"entry")
select new myService.tabA
{
a = x.Descendants(d + @H_419_136@"a").First().Value,
b = x.Descendants(d + @H_419_136@"b").First().Value,
c = x.Descendants(d + @H_419_136@"c").First().Value
};
dg.ItemsSource = List;
}
}
#endregion
//--------------------------------------------------------------------------------------
myService.myDBEntitIEs server;
private voID spTool_Loaded(object sender,RoutedEventArgs e)
{
Uri url = new Uri(@H_419_136@"http://localhost:8081/WebDataService1.svc");
server = new myService.myDBEntitIEs(url);
}
#region DataServiceContext方式加载数据
private voID btnRetriveByService_Click(object sender,RoutedEventArgs e)
{
Uri urlE = new Uri(@H_419_136@"http://localhost:8081/WebDataService1.svc/tabX");
server.BeginExecute<myService.tabX>(urlE,new AsyncCallback(load_completed),null);
}
voID load_completed(IAsyncResult obj)
{
var tp = server.EndExecute<myService.tabX>(obj);
this.dg.ItemsSource = tp.ToList();
}
#endregion
voID saveChanges_completed(IAsyncResult obj)
{
if (obj.IsCompleted)
{
//新增后,立即调用btnRetriveByService_Click时,会出错。
btnRetriveByService_Click(null,new RoutedEventArgs());
}
}
#region 添加数据并保存
private voID btnCreate_Click(object sender,RoutedEventArgs e)
{
server.AddTotabX(new myService.tabX() { x = @H_419_136@"007",z = @H_419_136@"sss",y = @H_419_136@"sss" });
server.BeginSaveChanges(new AsyncCallback(saveChanges_completed),null);
}
#endregion
#region 修改数据并保存
private voID btnUpdate_Click(object sender,RoutedEventArgs e)
{
Uri urlE = new Uri(@H_419_136@"http://localhost:8081/WebDataService1.svc/tabX");
server.BeginExecute<myService.tabX>(urlE,new AsyncCallback(begin_edit),null);
}
voID begin_edit(IAsyncResult obj)
{
var tp = server.EndExecute<myService.tabX>(obj).Where(p => p.x == @H_419_136@"007").First();
tp.y = @H_419_136@"hello";
server.UpdateObject(tp);
server.BeginSaveChanges(new AsyncCallback(saveChanges_completed),null);
}
#endregion
#region 删除数据并保存
private voID btnDelete_Click(object sender,RoutedEventArgs e)
{
Uri urlE = new Uri(@H_419_136@"http://localhost:8081/WebDataService1.svc/tabX");
server.BeginExecute<myService.tabX>(urlE,new AsyncCallback(begin_del),null);
}
voID begin_del(IAsyncResult obj)
{
var tp = server.EndExecute<myService.tabX>(obj).Where(p => p.x == @H_419_136@"007").First();
server.DeleteObject(tp);
server.BeginSaveChanges(new AsyncCallback(saveChanges_completed),null);
}
@H_665_502@#endregion 总结以上是内存溢出为你收集整理的SilverLight中使用数据服务对数据库CRUD全部内容,希望文章能够帮你解决SilverLight中使用数据服务对数据库CRUD所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)