У меня возникла странная проблема, я не могу получить объект из БД, а затем снова подключить его. Я написал такой код для других проектов, но по какой-то нечетной причине он вызывает следующую ошибку в этом приложении:Свойство EntityKey может быть установлено только, LINQ2Entities
System.InvalidOperationException: Свойство EntityKey может быть установлено только в том случае, если текущее значение свойства равно null.
вот мой код:
Entities.Customer customer;
using (var context = new XXEntities())
{
IQueryable<Entities.Customer> query = from a in context.Customers select a;
query = query.Where(c => c.CODE == "003046");
customer = query.ToList()[0];
}
using (var context = new XXEntities())
{
context.Customers.AddObject(customer);
context.SaveChanges();
}
Может быть лучшим вариантом было бы оставить запись прикрепленной. Выполняйте всю свою бизнес-логику в другом месте, а затем, когда у вас есть все изменения, которые вы хотите сделать, передайте объект, содержащий обновленные данные, методу, в котором вы запрашиваете БД, внесите изменения и сохраните изменения, все в такой же метод, чтобы запись всегда была прикреплена. Выполнение этого на вашем пути приведет к проблемам позже, в какой-то момент. – frenchie
Я должен был дать больше контекста на вопрос, извините, что я делаю следующее: GET OBJECT -> PARSE OBJECT TO DTO -> PASS DTO через WS -> MODIFY DTO -> PASS DTO BACK через WS -> REMAP DTO TO ENTITY -> SAVE ENTITY. Проблема в том, что я потерял весь связанный материал LINQ2Entities, чтобы узнать, новый или изменен объект. – Joshy
Это может работать наоборот: Прикрепите новый объект с Id = null. Хотя я не совсем уверен. –