Используя ASP.NET MVC и Entity Framework, я сталкиваюсь с некоторыми ошибками присоединения / отсоединения, когда мне нужно записать изменения в базу данных.
Сначала вот как я получаю записи из своего хранилища:
public PublishedApplication GetPublishedApplication(int id)
{
return dal.ExecuteFirstOrDefault(
context.PublishedApplication.Include("Customers")
.Where(w => w.Id == id));
}
Обратите внимание, что это не отключается, и имеет MergeOption = AppendOnly.
В другом месте я вызываю метод в своем репо, чтобы прикрепить клиента к приложению:
public void AttachCustomer(int applicationId, int customerId)
{
var app = new PublishedApplication{ Id = applicationId};
var customer = new Customer { Id = customerId};
try
{
context.AttachTo("PublishedApplication", app);
context.AttachTo("Customer ", customer );
app.Customers.Add(customer);
context.SaveChanges();
}
catch
{
throw;
}
}
Это, конечно, дает мне ошибку, что объекты (приложение и клиент) уже присоединены к контексту объекта.
Так что мне нужно отсоединить мои объекты в моем хранилище. Это также более правильно, так как мне не нужно разбрасывать «информацию, связанную с запросами», в Интернете. Но как я могу это сделать? Если я отсоединяю сущность в своем методе GetPublishedApplication
, мой график связанных данных теряется, и я не могу себе этого позволить. Мне нужен этот график в другом месте на моем сайте. Также нельзя использовать параметр слияния NoTracking
.
Итак, какие у меня есть варианты?
Заранее спасибо!