I am new to NHibernate. We are using Dapper for retrieval and planning to use NHibernate for CRUD.
I am trying to remove the child object through parent list object in one to many relationship.
This works when I retrieve the object using NHibernate session and remove the item.
var mercedes = Read("chevrolet"); //queries from nhibernate session
var model = mercedes.Models.Where(c => c.Id == 181).Single();
mercedes.Models.Remove(model);
When I manually create the object and attach thecars models, it is unable to remove it.
var mercedes = new Make() { Id = 77, Name = "chevrolet" };//manually created the object
mercedes.Models = GetAllModels(77);//I have it in-memory
var model = mercedes.Models.Where(c => c.Id == 173).Single();
mercedes.Models.Remove(model);
I think I am doing something weird. But I am able to add/update the models using second approach, so why can’t i remove it. Any insights please.
When you create a new domain object it isn’t attached to the NHibernate session (unless you are creating a new object and call Save, for instance). As such, deleting from the models collection doesn’t actually do anything.
Your second example doesn’t seem like a particularly good practice but you can recreate an object and attach it to your NHibernate session using
Session.Lock(MergeorUpdateare fairly normal depending on your preferred behavior).