积极答复者
WCF RIA 如何获取表里字段的最大值

问题
答案
-
我也不知道这个方法是不是最简便的,我也刚接触RIA Service.
以Northwind数据库的Products表为例,它有个UnitPrice字段,我们要取最高的价格,在服务器端的NorthwindDomainService类里添加GetHighestPrice()方法:
[EnableClientAccess()]
public class NorthwindDomainService : LinqToEntitiesDomainService<NORTHWNDEntities>
{
public IQueryable<Products> GetProducts()
{
return this.ObjectContext.Products.OrderByDescending(p => p.UnitPrice);
}
public decimal GetHighestPrice()
{
return this.ObjectContext.Products.Max(p => p.UnitPrice).GetValueOrDefault();
}...
客户端异步调用这个服务器端GetHighestPrice()方法在客户端自动生成的对应方法。客户端生成的GetHighestPrice方法签名可以在Generated_Code目录(Solution Explorer里点Show All Files按扭可以看到)下的XXX.Web.gs里找到。当然有规律可循,和js异步调用ASP.NET Web Service情形有点相似。
NorthwindDomainContext ctx = new NorthwindDomainContext(); //NorthwindDomainService到了客户端会自动生成对应的NorthwindDomainContext. ctx.GetHighestPrice(delegate(InvokeOperation<decimal> price) { label1.Content = string.Format("最高价格是:{0:c}", price.Value); },null);
- 已标记为答案 冷月 2010年9月1日 13:33
全部回复
-
我也不知道这个方法是不是最简便的,我也刚接触RIA Service.
以Northwind数据库的Products表为例,它有个UnitPrice字段,我们要取最高的价格,在服务器端的NorthwindDomainService类里添加GetHighestPrice()方法:
[EnableClientAccess()]
public class NorthwindDomainService : LinqToEntitiesDomainService<NORTHWNDEntities>
{
public IQueryable<Products> GetProducts()
{
return this.ObjectContext.Products.OrderByDescending(p => p.UnitPrice);
}
public decimal GetHighestPrice()
{
return this.ObjectContext.Products.Max(p => p.UnitPrice).GetValueOrDefault();
}...
客户端异步调用这个服务器端GetHighestPrice()方法在客户端自动生成的对应方法。客户端生成的GetHighestPrice方法签名可以在Generated_Code目录(Solution Explorer里点Show All Files按扭可以看到)下的XXX.Web.gs里找到。当然有规律可循,和js异步调用ASP.NET Web Service情形有点相似。
NorthwindDomainContext ctx = new NorthwindDomainContext(); //NorthwindDomainService到了客户端会自动生成对应的NorthwindDomainContext. ctx.GetHighestPrice(delegate(InvokeOperation<decimal> price) { label1.Content = string.Format("最高价格是:{0:c}", price.Value); },null);
- 已标记为答案 冷月 2010年9月1日 13:33
-
ctx.GetHighestPrice( invokeOp => { label1.Content = string.Format("最高价格是:{0:c}", invokeOp.Value); }, null);
或者这么玩?InvokeOperation<decimal> invokeOp = ctx.GetHighestPrice(); invokeOp.Completed += new System.EventHandler(invokeOp_Completed); void invokeOp_Completed(object sender, System.EventArgs e) { InvokeOperation<decimal> invokeOp = (InvokeOperation<decimal>)sender; label1.Content = string.Format("最高价格是:{0:c}", invokeOp.Value); }