با سلام.

گاهی نیاز است که ما بتونیم تا عدد بعدی ستون ID رو که PrimaryKey کردیم و به صورت اتوماتیک زیاد میشه بخونیم.

اگر Table ما خالی نباشه که به راحتی میشه با LINQ این کار رو انجام داد

public int GetLastNewsID()
{
    return TableNames.Select(q => q.id).Max();
}

 

اما اگر Table ما خالی باشه تابع بالا Exception میده و کار خراب میشه. برای اینکه هیچ وقت با Exception مواجه نشیم باید از T-SQL استفاده کنیم. خوب من تابع مورد نیاز برای این کار رو براتون نوشتم که امیدوارم به دردتون بخوره.

Create FUNCTION [dbo].[GetLastNewsID](@TableName NVARCHAR(50))
RETURNS int
AS
BEGIN
    RETURN(SELECT IDENT_CURRENT (@TableNameAS Current_Identity);
END

حالا اگر بخواهیم از خود LINQ استفاده کنیم تابع زیر کار ما رو راه می اندازه:

public int GetLastID(string tableName)
{
    const string command = @"SELECT IDENT_CURRENT ({0}) AS Current_Identity;";
    var id = EntityModel.ExecuteStoreQuery(command, tableName).First();
    return Convert.ToInt32(id);
}


کلمات کلیدی :
next automatically incrementing primary key

منبع StackSverFlow




برچسب های این مطلب : sql و بریده کد و ترفند و linq