2016-01-14 70 views
-3

我使用Enumerable.Range(1, 1).FirstOrDefault()試圖增加我的MKCRFQ數字1每次在我的數據庫/表中創建新行時。我正在使用WCF服務和WPF應用程序。Enumerable Range將int增加1

客戶

using (MKCServiceClient service = new MKCServiceClient()) 
{ 
    await service.GetQuoteAsync(new QuoteData 
    { 
     ... 
     MKCRFQ = Enumerable.Range(1, 1).FirstOrDefault(), 
     ... 
    }); 
} 

服務

public QuoteResults CalculateResult(Database db, QuoteData data) 
{ 
    var result = new QuoteResults 
    { 
     Successful = false, 
     Data = data 
    }; 

    var quote = new Quote 
    { 
     ... 
     MKCRFQ = data.MKCRFQ, 
     ... 
    }; 

    result.Quote = quote; 
    result.Successful = true; 
    return result; 
} 

public void GetQuote(QuoteData data) 
{ 
    using (Database db = new Database()) 
    { 
     var result = CalculateResult(db, data); 
     db.Quote.Add(result.Quote); 
     db.SaveChanges(); 
    } 
} 

我的問題是,每次我插入數據添加新行的MKCRFQ數爲1的一個新行,而且我不知道如何增加(+1)每添加一行新行。這看起來很簡單,但我從來沒有這樣做過,也不知道如何。有人可以解釋或告訴我這是如何完成的?

+1

'Enumerable.Range(1,1).FirstOrDefault()',真的嗎?爲什麼不直接1 :) –

+1

爲什麼你會期望'Enumerable.Range(1,1)'做你期望的?它永遠不會返回除{1}之外的任何內容,而不是每次調用時增加的數字(尤其是在應用程序重新啓動後)。如果您想要獲取數據庫中當前的最大數量,請查詢數據庫中的最大數量並將其增加一個。 – CodeCaster

+0

那麼,如果我只是使用'Enumerable.Range(1)',我會得到我需要的結果? 0_o – CareTaker22

回答

1

是的,我知道這不是一個很好的問題......但是我明白了我的意思。它可能不是一些最好的編碼或充分的證明,但它的工作原理,我在這裏發佈這裏任何人可能需要我是如何做到這一點的參考:)

這是我的服務編碼,它發生的一切:

public void GetQuote(QuoteData data) 
{ 
    using (Database db = new Database()) 
    { 
     var result = CalculateResult(db, data); 

     byte[] pdfByte = (result.Data.PDF); 
     var pdf = new PDF { PDFbyte = pdfByte, CustomerId = result.Data.CustomerId }; 
     db.PDF.Add(pdf); 

     //Here 
     int rfqLast = (from x in db.Quote where x.MKCRFQ != null orderby x.Id descending select x.MKCRFQ).Take(1).SingleOrDefault(); 
     var rfqAdd = new Quote { MKCRFQ = rfqLast + 1 }; 

     result.Quote.MKCRFQ = rfqAdd.MKCRFQ; 

     db.Quote.Add(result.Quote); 
     db.SaveChanges(); 
    } 
} 
+0

您可能想要選擇一個'MAX(MKCRFQ)'。這可能巧合地對應於'MAX(ID)',但不能保證。 – CodeCaster