Ich verwende Dapper mit C# und Back-End ist MS Access. Meine DAL-Methode fügt Datensatz in Datenbank ein. Ich möchte einen eindeutigen Bezeichner (oder aktualisierten POCO mit eindeutiger Kennung) der eingefügten Zeile zurückgeben. ich meine Funktion etwas erwartet wie folgt (Ich weiß, das funktioniert nicht, nur zu erklären, was ich will): -Dapper + MSAccess: Wie bekomme ich die Kennung der eingefügten Zeile?
public MyPoco Insert(MyPoco myPoco)
{
sql = @"INSERT INTO MyTable (Field1, Field2) VALUES (@Field1, @Field2)";
var param = GetMappedParams(myPoco);//ID property here is null.
var result = _connection.Query<MyPoco>(sql, param, null, false, null, CommandType.Text);.Single();
return result;//This result now contains ID that is created by database.
}
Ich bin von NHibernate Welt und POCO aktualisiert automatisch mit NH. Wenn nicht; Wir können die Refresh-Methode aufrufen und die ID aktualisieren. Mir ist nicht bewusst, wie das mit Dapper zu erreichen ist.
Ich lese this Frage zu SO, die nicht relevant ist, da es über SQL Server spricht.
Eine andere this Frage hat keine Antwort angenommen.
Ich lese this Frage, wo akzeptiert Antwort erklärt Grubenstürze der Verwendung @@Identity
.
Ich denke, es ist Ihre Antwort http://StackOverflow.com/Questions/2230719/Scope-Identity-in-Microsoft-Access – progpow
@Progpow: Sie vorschlagen ** SELECT @@ Identität **. Ich bin mir nicht sicher, ob das zuverlässig ist. Meine Anwendung ist eine Mehrbenutzeranwendung, in der mehrere Benutzer gleichzeitig Datensätze in derselben Tabelle einfügen. Nach meinem Verständnis wird dies nicht empfohlen. Korrigiere mich, wenn ich falsch liege. –
Sie können testen, ich habe eine Antwort darauf geschrieben, kann sie aber nicht finden. Verwenden Sie eine isolierte Instanz (set db = currentdb), pausieren Sie vor dem SQL und fügen Sie einen Datensatz manuell ein. Ich denke, Sie werden feststellen, dass es wahr ist. – Fionnuala