Я хочу удалить ценовые списки ICollection из продукта.
Я использую следующий метод. Однако они, кажется, не удаляются. Чего мне не хватает
Когда я сделаю шаг. я заметил, что "product.PriceBreaks.Clear ();" на самом деле не очищает предметы. Мне нужно промыть или что-то?
public void RemovePriceBreak (int productId)
{
using (ISession session = EStore.Domain.Helpers.NHibernateHelper.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
var product = session.Get<Product>(productId);
// i can see 20 PriceBreak records, tho nh prof saids PriceBreak table hasn't been hit
product.PriceBreaks.Clear();
session.SaveOrUpdate(product);
transaction.Commit(); // PriceBreak table is hit here with select statement, no delete?
}
}
Вот мои файлы hbm
<class name="Product" table="Products">
<id name="Id" type="Int32" column="Id" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="CompanyId" column="CompanyId" type="Int32" not-null="true" />
<property name="Name" column="Name"/>
<set name="PriceBreaks" table="PriceBreaks" generic="true" cascade="all-delete-orphan" inverse="true" >
<key column="ProductId" />
<one-to-many class="EStore.Domain.Model.PriceBreak, EStore.Domain" />
</set>
</class>
<class name="PriceBreak" table="PriceBreaks">
<id name="Id" type="Int32" column="Id" unsaved-value="0">
<generator class="identity"/>
</id>
<many-to-one name="Product" column="ProductId" not-null="true" class="EStore.Domain.Model.Product, EStore.Domain" />
</class>
Мои сущности
public class Product
{
public virtual int Id { get; set; }
public virtual ICollection<PriceBreak> PriceBreaks { get; set; }
public virtual void AddPriceBreak(PriceBreak priceBreak)
{
priceBreak.Product = this;
PriceBreaks.Add(priceBreak);
}
}
public class PriceBreak
{
public virtual int Id { get; set; }
public virtual Product Product { get; set; }
}
Вот sql от nhprof
//
ВЫБЕРИТЕ product0_.Id as Id0_0_
ИЗ продуктов product0_
ГДЕ product0_.Id = 23 / * @ p0 * /
, а затем
ВЫБЕРИТЕ pricebreak0_.ProductId as ProductId1_,
pricebreak0_.Id as Id1_,
pricebreak0_.Id as Id1_0_,
pricebreak0_.ProductId as ProductId1_0_,
ОТ PriceBreaks Pricebreak0_
ГДЕ Pricebreak0_.ProductId = 23 / * @ p0 * /
обновления нет или выберите