2013-04-11 4 views
1

У меня есть две таблицы. Таблица документов и таблица версий. Оба являются идентификаторами, за исключением того, что таблица версий имеет поле ID и поле documentID. В таблице документов есть поле documentId.Linq обновление базы данных, первичный ключ

Я могу правильно найти документ, но я не могу найти информацию о таблице версий, потому что id, который я заполняю в ней, пытается найти это в поле id вместо поля documentId.

public ActionResult ApproveDocument(int id = 0) 
    { 
     IPACS_Document ipacs_document = db.IPACS_Document.Find(id); 
     IPACS_Version ipacs_version = db.IPACS_Version.Find(id); 

     ipacs_version.dateApproved = System.DateTime.Now; 
     ipacs_version.approvedBy = User.Identity.Name.Split("\\".ToCharArray())[1]; 

     ipacs_document.dateApproved = System.DateTime.Now; 
     ipacs_document.approvedBy = User.Identity.Name.Split("\\".ToCharArray())[1]; 
     ipacs_document.revision = ipacs_version.revision; 

     db.SaveChanges(); 

     return RedirectToAction("Approve"); 
    } 

Так ipacs_document найдена правильно, так как идентификатор передается в 11 работах. Однако ipacs_version ничего не нашел, потому что он пытается найти id 11 вместо documentId 11.

+0

Я не знаком с методом .Find (id) ... написал ли вы его или был автогенерирован? – Colin

+0

Он автоматически генерируется. –

ответ

1

Если вам интересно, о том, как использовать Find (DbSet <>) заниматься composite keys ...

Метод Find принимает массив объектов в качестве аргумента. При работе с составными первичными ключами передайте значения ключей, разделенные запятыми , и в том же порядке, в котором они определены в модели.

http://msdn.microsoft.com/en-us/library/gg696418(v=vs.103).aspx

db.IPACS_Version.Find(id, documentid); // mind the order 

А для чего-то более сложным, иметь в виду, что вы всегда можете использовать Linq запросов, например Where

db.IPACS_Version.Where(x => x.Id == id && x.DocumentId == docid && x.Flag == true); 

Примечание: Вы можете использовать query, Where (независимо от того, как сделаны ваши лица) -
, но если ваш keys не настроены должным образом (на основе комментариев) - Я бы отговорил тебя идти таким образом. Вместо быстрого исправления убедитесь, что ваши таблицы, pk-s настроены так, как должны, - , поскольку это необходимо. Затем вы можете увидеть, какой запрос лучше для вас (или просто используйте «Найти», если это все, что вам нужно).

+0

Hrm Интересно, правильно ли была настроена база данных. В таблице версий есть только один первичный ключ, прикрепленный к ID. –

+0

, вероятно, тогда Джеймс. Просто загрузите сущности, которые вы используете, и я тоже могу помочь. – NSGaga

+0

Если это первый код, я предполагаю, что это так, но не обязательно, конечно. – NSGaga

Смежные вопросы