none
WCF RIA 如何获取表里字段的最大值 RRS feed

  • 问题

  • 之前查询一个表里的一个字段的最大值可以通过

    select  max(filedname) from tablename

    现在使用了wcf ria 应该怎么来获得这个最大值呢,我需要用这个值来进行编号

    刚接触RIA,望大伙指点

    2010年9月1日 6:54

答案

  • 我也不知道这个方法是不是最简便的,我也刚接触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
    2010年9月1日 12:11

全部回复

  • 我也不知道这个方法是不是最简便的,我也刚接触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
    2010年9月1日 12:11
  • thank you very much

    我测试了这个方法是可行的,还有一个问题,这是一个异步调用的方法,如何确定调用的完成

    我查看了 InvokeOperation<TValue> 这个类有一个 IsComplete 属性,不知道怎么加上去

    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);
    }
    

     

     

    2010年9月1日 14:00
  • 能不能用VB.net代码写一片
    2010年12月30日 6:58