Ich bin neu in C # und definitiv neu bei Dapper.NET. Dies ist das erste Mal, dass ich ORMs und Frameworks in Angriff nehme, also würde ich gerne mehr über eine Syntax erfahren.
Ich habe mehrere INSERT
Abfragen gesehen und festgestellt, dass alle das haben
SELECT CAST(SCOPE_IDENTITY() AS INT);
nach dem INSERT INTO...;
Linie.
Ich würde gerne die Wichtigkeit oder den Nutzen davon wissen. Vielen Dank
Edit: hier ist ein Code, den ich geschrieben habe, und funktioniert soweit ich getestet habe.
Dies ist die Users.cs
:
public class Users
{
private int _uid;
private string _fullname;
private string _username;
private string _passcode;
public int uid
{
get { return _uid; }
set { _uid = value; }
}
public string fullname
{
get { return _fullname; }
set { _fullname = value; }
}
public string username
{
get { return _username; }
set { _username = value; }
}
public string passcode
{
get { return _passcode; }
set { _passcode = value; }
}
}
und das ist die insertUser.cs
:
public Users InsertData(Users newUser)
{
string strQry = @"INSERT INTO [Users] VALUES (@uid, @fullname, @username, @passcode);
SELECT * FROM [Users] WHERE [uid] = CAST(SCOPE_IDENTITY() as int);";
using(var conn = InitOpenConn())
{
try
{
var ins = conn.Query<Users>(strQry, newUser).Single();
return ins;
}
catch (Exception ex)
{
throw ex;
}
}
}
und das ist Program.cs
:
InsertUser ium = new InsertUser();
try
{
Users newUser = new Users
{
uid = 10,
fullname = "James Bond",
username = "james007",
passcode = "095e3cbaf34467fbe1b0f4cd846a57460718d2b4ca504caca28ae5287e8d076db3ddadac11db87ab6ac9dac4b8d84d9a65e67e98ab6ef979c61f277f51df36f3"
};
Users insUsr = ium.InsertData(newUser);
refreshTable();
MessageBox.Show("Added !");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Wenn Sie eine neue Zeile in eine SQL Server-Tabelle mit einer Identity
Spalte einfügen, muss das ORM die generierte ID von der Datenbank abrufen, um Ihr Modell direkt in der Anwendung zu aktualisieren.
Beispiel:
/****************** pseudo code ******************/
SomeClass obj = new SomeClass();
obj.SomeProperty = someValue;
// INSERT TO database with Dapper and return inserted ID
int insertedID = SomeMethodToInsertUsingDapper(obj);
obj.ID = insertedID;
// The generated ID is get from the database using
// SELECT CAST(SCOPE_IDENTITY() AS INT);
// so this next line prints the ID generated in the database.
Console.WriteLine(obj.ID);
Dapper Einschränkungen:
Dapper hat einige Einschränkungen für die Identity-Spalte. SELECT CAST(SCOPE_IDENTITY() AS INT)
, die Dapper
verwenden diese SQL-Syntax SELECT CAST(SCOPE_IDENTITY() AS INT)
, um die generierte ID
aus der database
SELECT CAST(SCOPE_IDENTITY() AS INT)
. Und dann verwende diese ID
in der application
.
Identitätsspalte in einer numerischen Spalte in der Datenbank, die bei jeder Einfügung automatisch inkrementiert wird.
SELECT CAST(SCOPE_IDENTITY() AS INT)
Diese Codezeile gibt die zuletzt eingefügte Identität ID der Tabelle.
Wir haben viele davon. Wie wir überprüft haben, den Wert eingefügt oder nicht und auch, wenn Sie möchten, einige Operationen auf aktuell eingefügten Strom.
Wenn Sie dann EF (ORM) verwenden und Ihre Tabelle EMP_master ist, können Sie die aktuelle ID unter Verwendung der folgenden Syntax abrufen
EMp_master obj=new Emp_master
obj.first="suraj";
obj.Emp_master.add(obj);
obj.savechagnes();
int currentinsertedid = obj.empid // this syntax same as SELECT
CAST(SCOPE_IDENTITY() AS INT) both give same record.