2016-01-14 45 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