我使用MV5
和Entity Frameowrk
连接到数据库SQL Server
MVC实体Framwork,插入使用选择MAX()从表
我需要做一个Insert
当越来越ID这样开发的应用程序。
从表中选择max(id)+1,其中field_id = @ID。
这个想法是在一次交易中完成。 这是可能的做它在实体框架或我应该使用Store Procedure
?
我使用MV5
和Entity Frameowrk
连接到数据库SQL Server
MVC实体Framwork,插入使用选择MAX()从表
我需要做一个Insert
当越来越ID这样开发的应用程序。
从表中选择max(id)+1,其中field_id = @ID。
这个想法是在一次交易中完成。 这是可能的做它在实体框架或我应该使用Store Procedure
?
EF将您提供的C#表达式编译为SQL,然后执行生成的SQL。所以,你可以写在LINQ这样的查询,将在-其实在一个单一的“呼叫”到数据库来计算:
long id = MyDbContext.MyDbSet.Max(entity => entity.Id) + 1;
请注意,如果你这样做,这样你可以指定一个非现有的ID添加到新的条目 - 没有必要。 EF会为您处理这个问题,只要该字段的名称为Id并且类型为long。只是不要分配任何价值。
对不起,我不明白..你说我可以做一个table.Select(max)然后是:saveChanges并且它在同一个事务中执行?谢谢 – Diego
不需要道歉。然而,这不是我所说的。我说如果你使用LINQ并创建一个类似于你在C#中展示的语句,它将通过一次数据库调用来执行。查看我的编辑 –
@Diego EF的全部重点是使开发人员能够使用他们最喜欢的编程语言,而不使用sql。如果您使用的是EF和SQL,那么您可能错过了EF功能。 –
你想用这个完成什么?这听起来像你*应该使用的是一个'IDENTITY'列,而不是试图创建自己的(这将导致问题)。 – David
这是一个部门表......它对每个国家/地区都有一个唯一的ID。但你已经说了一个很好的决定..谢谢 – Diego