Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak uzyskać kolejną wartość sekwencji SQL Server w Entity Framework?

Możesz utworzyć prostą procedurę składowaną w SQL Server, która wybiera następną wartość sekwencji w następujący sposób:

CREATE PROCEDURE dbo.GetNextSequenceValue 
AS 
BEGIN
    SELECT NEXT VALUE FOR dbo.TestSequence;
END

a następnie możesz zaimportować tę procedurę składowaną do modelu EDMX w Entity Framework i wywołać tę procedurę składowaną i pobrać wartość sekwencji w następujący sposób:

// 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);
}

Aktualizacja: właściwie możesz pominąć procedurę składowaną i po prostu uruchomić to surowe zapytanie SQL z kontekstu EF:

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;
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najszybszy sposób wykonywania zagnieżdżonych wstawek zbiorczych z użyciem scope_identity()?

  2. Dlaczego nie mogę użyć aliasu w instrukcji DELETE?

  3. Kiedy używałbyś funkcji z wartościami przechowywanymi w tabeli?

  4. Poznaj relacje między wszystkimi tabelami bazy danych w SQL Server

  5. 5 szybkich przydatnych wskazówek dla administratorów baz danych SQL Server Production