0
我需要在SQL數據庫中鏡像DNS服務器上的所有DNS條目。我能夠使用WMI和C#查詢DNS。我可以使用L2S查詢SQL的現有記錄,但是還有很大的改進餘地。LINQ to SQL INSERT WHERE不在集合中
LINQ To SQL語句是什麼樣子,它會將不在WMI返回的ManagementObjectCollection中的記錄插入到SQL表中?
我到目前爲止的工作,但似乎效率低下。
internal static void SyncRecordInfo()
{
int affected = 0;
DnsEntityDataContext db = new DnsEntityDataContext();
//Select records in DNS
string[] Types = { "A", "CName", "MX" };
for (int i = 0; i < Types.Length; i++)
{
string Query = "SELECT * FROM MicrosoftDNS_" + Types[i] + "Type";
ObjectQuery qry = new ObjectQuery(Query);
DnsProvider dns = new DnsProvider();
ManagementObjectSearcher s = new ManagementObjectSearcher(dns.Session, qry);
ManagementObjectCollection col = s.Get();
dns.Dispose();
foreach (var item in col)
{
//(from m in ManagementObjectCollection select m.SomeID).Contains(<main source field>)
int count = (from r in db.Records
where ((r.Data.Contains(item["RecordData"].ToString())) && (r.Name.Contains(item["OwnerName"].ToString())))
select r).Count();
if (count < 1)
{
//Insert records in SQL
Record record = new Record();
record.Data = item["RecordData"].ToString();
record.Name = item["OwnerName"].ToString();
//record.Notes = item["ContainerName"].ToString();
record.Type = Types[i];
db.Records.InsertOnSubmit(record);
db.SubmitChanges();
affected++;
}
}
}
}
Brian,我爲你增加了一些細節。我認爲你在正確的軌道上。 – mcass20 2010-08-11 20:24:02