Vraag Hoe een object te verwijderen met PK in nibernate?


Hoe verwijder ik een object zonder het eerst van de db op te halen?

In een andere ORM kan ik dit doen:

session.Delete<User>(1); // 1 = PK

11
2018-06-17 16:55


oorsprong


antwoorden:


Voeg de volgende klasse toe aan uw project:

public static class SessionHelper
{
    public static void Delete<TEntity>(this ISession session, object id)
    {
        var queryString = string.Format("delete {0} where id = :id",
                                        typeof(TEntity));
        session.CreateQuery(queryString)
               .SetParameter("id", id)
               .ExecuteUpdate();
    }
}

Je kunt nu gebruiken session.Delete<User>(1).


26
2018-06-17 19:58



Je zou dit kunnen doen

User user = new User();
user.Id = 1;
session.Delete(user);

6
2018-06-17 17:01



Probeer dit:

var user = session.Load<User>(1);
session.Delete(user);

Load maakt een proxy voor het gebruikersobject met de identificatieset. Ik weet niet zeker of Delete zal het object uit de database laden voordat het wordt verwijderd en ik kan het op dit moment niet testen.


3
2018-06-17 19:36



Bekijk de ExecuteUpdate-methode op het IQuery-object.

IQuery q = session.CreateQuery ("delete from User where Id = 1");
q.ExecuteUpdate();

Moet het object verwijderen zonder het afaik op te halen.


2
2018-06-17 17:00



vóór ver 2 was er geen manier. Na ver 2 heb je de ExecuteUpdate() methode op IQuery en er is een overbelaste methode aan ISession.Delete() waar een tekenreeks wordt geaccepteerd die een verwijderingsquery definieert


0
2018-06-17 20:18