I want to make use SQL Server sequence
objects in Entity Framework to show number sequence before save it into database.
In current scenario I'm doing something related by increment by one in stored procedure (previous value stored in one table) and passing that value to C# code.
To achieve this I needed one table but now I want to convert it to a sequence
object (will it give any advantage ?).
I know how to create sequence and get next value in SQL Server.
But I want to know how to get next value of sequence
object of SQL Server in Entity Framework?
I am to unable to find useful answers in Related questions in SO.
Thanks in advance.
You can create a simple stored procedure in SQL Server that selects the next sequence value like this:
CREATE PROCEDURE dbo.GetNextSequenceValue
AS
BEGIN
SELECT NEXT VALUE FOR dbo.TestSequence;
END
and then you can import that stored procedure into your EDMX model in Entity Framework, and call that stored procedure and fetch the sequence value like this:
// get your EF context
using (YourEfContext ctx = new YourEfContext())
{
// call the stored procedure function import
var results = ctx.GetNextSequenceValue();
// from the results, get the first/single value
int? nextSequenceValue = results.Single();
// display the value, or use it whichever way you need it
Console.WriteLine("Next sequence value is: {0}", nextSequenceValue.Value);
}
Update: actually, you can skip the stored procedure and just run this raw SQL query from your EF context:
public partial class YourEfContext : DbContext
{
.... (other EF stuff) ......
// get your EF context
public int GetNextSequenceValue()
{
var rawQuery = Database.SqlQuery<int>("SELECT NEXT VALUE FOR dbo.TestSequence;");
var task = rawQuery.SingleAsync();
int nextVal = task.Result;
return nextVal;
}
}