我正在编写硬件清单应用程序。我通过WMI从计算机获取数据,并使用LINQ将其写入数据库。
最终我最终得到了一条记录:
ID HOSTNAME OS Memory
1 myHostname Windows 7 4Gb
现在假设我在这台计算机上添加了一些内存,下次应用程序找到它时,它会更新来自这台计算机的信息并尝试将其写入数据库。
在写作之前,我检查我的Hostname
是否已存在于数据库中(它是Primary Key
),在这种情况下它已经存在。那么现在,我是否在数据库中查询此主机名并获取我为此计算机提供的所有信息并使用它创建一个对象并将其与我从WMI获得的对象进行比较?
有没有办法根据每条记录信息在我的表上创建一个值,然后让LINQ根据WMI对象创建一个并相互比较?
很抱歉,如果文字有点令人困惑,希望你们能帮我解决这个问题。
答案 0 :(得分:1)
尝试这样的事情。
var entry = yourContext.YourTable.SingleOrDefault(e => e.HostName == someHostName);
答案 1 :(得分: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();