我看了一下stackoverflow,找到了我的问题的答案。 所有我发现的是:Get Last ID From The table [ Entity Framework ]
这正是我所需要的..但是这个问题没有答案..似乎问这个问题的人没有解释他为什么需要它。
我正在为我的公司编写票务系统。
现在,如果某人创建了一张票,我希望他不要自己输入票证ID(票号#)。我想要一个启用= false的文本框。它应该自动填充新的票证ID(它必须是最后的票证ID + 1)。
这就是为什么我要寻找我的实体的最后一个ID。
我尝试了这个:var ticketNrQuery = (from tn in kdVerwaltung.Ticket
orderby tn.Ticket_ID
select tn).Last();
textBoxTicketNr.Text = (ticketNrQuery.Ticket_ID + 1).ToString();
在这个示例中,我得到了一个不受支持的异常(什么地狱)。
我的问题的任何解决方案?
答案 0 :(得分:2)
您可以使用MAX(),因为它可以转换为SQL:
var maxTicketId = kdVerwaltung.Ticket.Max(x => x.Ticket_ID) + 1;
这将被翻译成以下查询:
SELECT MAX([t0].Ticket_ID) as [value] FROM [dbo].[YourTable] AS [t0]
如果您打算在生产中使用它,您应该对此进行分析。如果你有很多行,那么使用MAX可能会非常慢。
答案 1 :(得分:1)
Int32? newID = (from ticket in kdVerwaltung.Ticket select (int?)ticket.ID).Max();
newID = newID.HasValue ? newID.Value + 1 : 1;