Проблема автоматического назначения последовательного значения для новых элементов - PullRequest
1 голос
/ 31 марта 2011

Функция в отлаживаемом приложении позволяет пользователям создавать обзоры продуктов.Форма ввода имеет поле ReviewId, которое заполняется автоматически на основе количества существующих проверок - оно последовательно увеличивается на «1».Для существующих продуктов это работает отлично.

Для нового продукта предыдущих обзоров нет, поэтому, когда пользователь пытается его создать, приложение выдает исключение доменных служб.Я знаю, что это потому, что какой-то код ищет идентификатор последнего обзора, но, поскольку это новый продукт, его нет, и это вызывает ошибку.Я просто не могу понять код, необходимый для его исправления (программист PHP работает на C # / Silverlight).У меня нет доступа к изменению базы данных, поэтому я пытаюсь сделать это программно.

Вот что у меня есть:

AddReviewChildWindow.cs -

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

Счетчик InvokeOperation = review.GetLastReviewNumber (ProductId);

count.Завершено + = новый System.EventHandler (GetNewReviewNumberCompleted);
}

И DomainServices.cs -

[Description ("Возвращает номер идентификатора последнегообзор, связанный с продуктом. ")]
[Invoke]

public System.Int32 GetLastReviewNumber (Nullable productId)
{

int retVal = 0;

// Получить список отзывов о товаре.
IQueryable reviews = GetProductReviews (productId);

// Получить последний.
Отзыв о обзоре = reviews.Last ();

// Назначить новый.
retVal = review.ReviewNumber;
retVal ++; // добавить один к нему.

return retVal;
}

Это должно быть легко для тех, кто знает C #, я бы подумал - но я просто не могу его найти.Спасибо!

1 Ответ

1 голос
/ 31 марта 2011

Если я правильно понимаю ваши требования, это должно работать:

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