Voglio eliminare più record di una determinata entità in cui l'ID dell'entità è presente nell'elenco di ID che ho. Sto cercando di eseguire questa azione in C# con NHibernate.Elimina più record per elenco di ID con istruzione HQL
Quello che ho è un elenco di Id.
voglio fare qualcosa di simile a questo:
var idList = new List<Guid>() { Guid.NewGuid(),Guid.NewGuid()};
_session.CreateQuery("DELETE FROM MapsItem o WHERE o.Id = IN :idList")
.SetParameterList("idList", idList)
.ExecuteUpdate();
Ciò si traduce nella seguente errore:
Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 33 [DELETE FROM Album o WHERE o.Id = IN :idList]
La query è una dichiarazione HQL.
Cosa c'è di sbagliato nella query HQL.
Entrambe le risposte fornite alla domanda precedente danno una soluzione corretta. Tuttavia, quando eseguo l'HQL, l'errore è il seguente:
could not insert/select ids for bulk delete[SQL: insert into #MapsItem SELECT mapsitem0_.Id as Id FROM MapsItem mapsitem0_ inner join BaseEntity mapsitem0_1_ on mapsitem0_.Id=mapsitem0_1_.Id WHERE Id in (? , ? , ? , ? , ? , ?)]
L'entità MapsItem deriva dall'entità BaseEntity. Entrambi hanno un ID di proprietà nel database. La query SQL non può essere eseguita, perché l'ID della colonna nella clausola WHERE è ambiguo.
Come posso risolvere questo problema?
che ho incontrato lo stesso problema (nome di colonna ambigui 'id') durante il tentativo di aggiornamento di massa utilizzando elementi derivati query.ExecuteUpdate – Silviu
È necessario ripiegare a SQL! – Rippo