Когда я выполняю код ниже, в адресе в строке Mapper.Map
все в порядке, у меня есть правильные значения, поступающие из модели, но коллекция customer.Address
, ISet
, не обновляется в строке session.Save(customer)
.Должен быть обновлен, поскольку address
является ссылкой.
public ActionResult SaveAddressInvoice(CustomerAddressForView model)
{
var tx = session.BeginTransaction();
var customer = session.Get<Customer>(customerId);
var address = customer.Address.Where(x => x.Id == myAddressId).First<CustomerAddress>();
address = Mapper.Map<CustomerAddressForView, CustomerAddress>(model);
session.Save(customer);
tx.Commit();
}
Если я сделаю:
var address = customer.Address.Where(x => x.Id == myAddressId).First<CustomerAddress>();
address.Street = "MyStreet";
Я вижу запись, измененную в коллекции.
КонфигурацияСопоставление:
Mapper.CreateMap<CustomerAddressForView, CustomerAddress>()
.ForMember(x => x.Id, opt => opt.Ignore());
Есть идеи?
Обновление 1
public class Customer
{
public virtual int Id { get; set; }
public virtual string LastName { get; set; }
public virtual Iesi.Collections.Generic.ISet<CustomerAddress> Address { get; set; }
public Customer()
{
Address = new Iesi.Collections.Generic.HashedSet<CustomerAddress>();
}
}
public class CustomerAddress
{
public virtual int Id { get; set; }
public virtual string Street { get; set; }
public virtual Customer Customer { get; set; }
}