问题为新项目自动分配顺序值

时间:2011-03-31 16:26:44

标签: c# linq service ria iqueryable

我正在调试的应用程序中的一项功能允许用户创建产品评论。输入表单有一个ReviewId字段,该字段根据现有评论的数量自动填充 - 按顺序增加“1”。对于现有产品,这很好。

对于新产品,之前没有评论,因此当用户尝试创建一个评论时,该应用程序会引发域服务异常。我知道这是因为有一些代码正在寻找最后的评论ID,但由于它是一个新产品,没有一个,这会导致错误。我只是无法弄清楚修复它所需的代码(PHP程序员在C#/ Silverlight中工作)。我没有访问修改数据库的权限,所以我试图以编程方式执行此操作。

这就是我所拥有的:

AddReviewChildWindow.cs -

public void GetNewReviewNumber()
{
ReviewsDomainContext review = new ReviewsDomainContext();

InvokeOperation count = review.GetLastReviewNumber(ProductId);

count.Completed + = new System.EventHandler(GetNewReviewNumberCompleted);
}

和DomainServices.cs -

[说明(“返回与产品关联的上次审核的ID号。”)]
[调用]

public System.Int32 GetLastReviewNumber(Nullable productId)
{

int retVal = 0;

//获取产品评论列表 IQueryable reviews = GetProductReviews(productId);

//得到最后一个。
评论评论=评论。最后();

//分配新的。
retVal = review.ReviewNumber;
retVal ++; //加一个。

返回retVal;
}

对于那些了解C#的人来说,这应该是一个简单的方法,我想 - 但我找不到它。谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解你的要求,这应该有效:

public Int32 GetLastReviewNumber( Nullable productId )
{   
    int retVal = 0;

    //Get the list of reviews for product.
    IQueryable<Review> reviews = GetProductReviews( productId );

    //Get the last one.
    if(reviews.Count() != 0)
    {
        Review review = reviews.Last();

        //Assign new one.
        retVal = review.ReviewNumber;
    }
    retVal++;//add one to it.

    return retVal;    
}