Это конкретный вопрос. Мы кодируем сервис wcf с использованием C #, EF4.1 и Mapper.
Мы не хотим использовать хранимые процедуры ... Во всяком случае; Проблема в том, что мы хотим отредактировать поле адреса на БД. Но мы не можем сохранить отредактированный адрес в БД.
public int EditAddress(int userId, Address address)
{
using(var mobileServiceContext = new MobileServiceContext())
{
Address oldAddress = mobileServiceContext.Addresses.FirstOrDefault(p => p.UserId == userId && p.AddressId == address.AddressId);
Address lastAddress = Mapper.Map(address, oldAddress);
//save new-last address with ? HOW ?
//mobileServiceContext.Addresses.Attach(updatedAddress); //doesn't work
mobileServiceContext.SaveChanges();
}
return address.AddressId;
}
Вот наша отредактированная функция;
public int EditAddress(int userId, Address address)
{
using(var mobileServiceContext = new MobileServiceContext())
{
Address oldAddress = mobileServiceContext.Addresses.FirstOrDefault(p => p.UserId == userId && p.AddressId == address.AddressId);
Address lastAddress = Mapper.Map(address, oldAddress);
mobileServiceContext.Addresses.Attach(lastAddress); //error on this line
mobileServiceContext.ObjectStateManager.ChangeObjectState(lastAddress, EntityState.Modified);
mobileServiceContext.SaveChanges();
}
return address.AddressId;
}
Примечание: класс «Адресный адрес» уже имеет адрес. Поле идентификатора.
Это очень сложный дизайн, который мы сделали здесь, и его трудно читать читателю.