我有一个 Estimation 表,其中有一列 EstimationNo,我正在尝试像这样获得最大 EstimationNo-
var result = cont.SalesEstimateCont.Where(x => x.Org_ID == CurrentOrgId);
var estimationMaxNo = result.Any() ? result.Max(x => x.EstimateNo) + 1 : 1;
var DigitalEstimate = new SalesEstimate()
{
EstimateNo=estimationMaxNo;
};
cont.Estimate.Add(DigitalEstimate );
cont.Savechanges();
但问题是,如果同一个表同时被不同的用户保存,它会为两个用户保存相同的 EstimationNo。喜欢- 10,10
现在,如何处理这个问题..请给出一些解决方案。
最佳答案
最好的策略是让数据库引擎(我假设它是 SQL Server)处理 EstimateNo 字段的递增。这可以通过 identity 来完成可正常添加的规范not primary key领域也。
ALTER TABLE SalesEstimateCont drop column EstimateNo
go
ALTER TABLE SalesEstimateContadd Add EstimateNo int NOT NULL IDENTITY (1,1)
请注意:如果您有现有数据或需要修改某些数据,您可能需要一些额外的努力来实现这一点(即使用临时表并通过设置 IDENTITY INSERT ON )
关于c# - 如何使用linq从表中获取最大id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48577037/