【发布时间】:2016-01-14 11:48:09
【问题描述】:
每次在我的数据库/表中创建新行时,我都会使用 Enumerable.Range(1, 1).FirstOrDefault() 尝试将我的 MKCRFQ 数字增加 1。我正在使用 WCF 服务和 WPF 应用程序。
客户:
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)它。这可能看起来很简单,但我以前从未这样做过,也不知道怎么做。有人可以解释或告诉我这是如何完成的吗?
【问题讨论】:
-
Enumerable.Range(1, 1).FirstOrDefault(),真的吗?为什么不直接 1 :) -
你为什么期望
Enumerable.Range(1, 1)做你期望的事情?除了{ 1 }之外,它永远不会返回任何其他内容,而不是每次调用它时递增的数字(尤其是在应用程序重新启动后)。如果您想获取数据库中当前的最大数量,请查询您的数据库以获取最大数量并将其增加一。 -
那么,如果我只使用
Enumerable.Range(1),我会得到我需要的结果吗? 0_o -
不,是什么让你这么认为?你试过阅读
Enumerable.Range()'s documentation吗?该方法不会做你认为它做的事情,你需要编写代码来做你想做的事情。 -
写
MKCRFQ++;增加1