2013-10-07 3 views
0

Я пишу приложение инвентаризации оборудования. Я получаю данные с компьютера через WMI и записываю его в базу данных с LINQ.Проверка состояния записи базы данных

В конце концов, я в конечном итоге с записью, как:

ID HOSTNAME OS   Memory 
1 myHostname Windows 7 4Gb 

Теперь представьте, я добавить память на этом компьютере и в следующий раз приложение находит его, он будет иметь информацию с этого компьютера обновляется и будет пытаться записать его в базу данных.

Перед тем, как писать, я проверяю, есть ли мой Hostname в базе данных (это Primary Key), в этом случае он уже существует. Итак, теперь я запрашиваю базу данных для этого имени хоста и получаю всю информацию, которая у меня есть для этого компьютера, и создаю с ней объект и сравниваю его с объектом, который я получил от WMI?

Нет ли способа создать значение в моей таблице на основе каждой информации о записи, а затем LINQ создать его на основе объекта WMI и сравнить друг с другом?

Извините, если текст немного запутанный, надейтесь, что вы, ребята, можете мне помочь в этом.

+0

Может не * действительно * сказать, что именно вы просите, но я думаю, что ответ заключается в следующем: «Обычно в этом случае будет записана хранимая процедура с именем insertORupdate, которая будет выполнять соответствующее действие». – Hogan

+0

Да, ваш вопрос немного запутан. Посмотрите на Entity Framework Code First, который может помочь вам решить вашу проблему: http://msdn.microsoft.com/en-us/data/jj193542 –

ответ

1

Попробуйте что-нибудь подобное.

var entry = yourContext.YourTable.SingleOrDefault(e => e.HostName == someHostName); 
0

вам просто нужно запросить WMI_object.hostname == hostname

на этом делает код что-то вроде этого:

Dataobject obj = (select o from entity.objects where o.hostname == WMI_object.hostname); 
obj.memory = WMI_object.memory; 
entity.SaveChanges(); 
Смежные вопросы