Entityframework сохранение нескольких записей
У меня есть утилита, которая считывает состояние ресурсов сервера MicrosoftBizTalk .. в частности, компонент ReceiveLocation. Моя проблема заключается в том, что программа отправляет несколько записей каждого элемента, то есть каждый элемент в возвращаемых данных умножается на 25 таким образом, что вместо сохранения только 5 строк сохраняемые данные составляют 125. Так, например, вместо того, чтобы иметь только 1 строку для моего первого возвращенного ряда, у меня есть 25.
Это моя программа :
<pre> public List<BizTalk> GetBizTalkServicesStatistics() { List<BizTalk> model = new List<BizTalk>(); try { //Create the WMI search object. ManagementObjectSearcher Searcher = new ManagementObjectSearcher(); ConnectionOptions options = new ConnectionOptions { Username = "+username+", Password = "+password+", Authority = "+domain+" }; var server = "+server+"; // create the scope node so we can set the WMI root node correctly. ManagementScope Scope = new ManagementScope("\\\\" + server + "\\root\\MicrosoftBizTalkServer", options); Searcher.Scope = Scope; // Build a Query to enumerate the MSBTS_ReceiveLocation instances if an argument // is supplied use it to select only the matching RL. //if (args.Length == 0) SelectQuery Query = new SelectQuery(); Query.QueryString = "SELECT * FROM MSBTS_ReceiveLocation"; // else //Query.QueryString = "SELECT * FROM MSBTS_ReceiveLocation WHERE Name = '" + args[0] + "'"; // Set the query for the searcher. Searcher.Query = Query; // Execute the query and determine if any results were obtained. ManagementObjectCollection QueryCol = Searcher.Get(); // Use a bool to tell if we enter the for loop // below because Count property is not supported bool ReceiveLocationFound = false; // Enumerate all properties. foreach (ManagementBaseObject envVar in QueryCol) { // There is at least one Receive Location ReceiveLocationFound = true; PropertyDataCollection envVarProperties = envVar.Properties; foreach (PropertyData envVarProperty in envVarProperties) { BizTalk bizTalk = new BizTalk(); bizTalk.Name = Convert.ToString(envVar["Name"]); bizTalk.TransportType = Convert.ToString(envVar["AdapterName"]); bizTalk.Uri = Convert.ToString(envVar["InboundTransportURL"]); bizTalk.Status = Convert.ToString(envVar["Name"]); bizTalk.ReceiveHandler = Convert.ToString(envVar["HostName"]); bizTalk.ReceivePort = Convert.ToString(envVar["ReceivePortName"]); bizTalk.RunDate = DateTime.Now; bizTalk.ApplicationId = 24; bizTalk.ServerId = 8; bizTalk.InstanceName = "FBCZOP"; model.Add(bizTalk); } } if (!ReceiveLocationFound) { Console.WriteLine("No receive locations found matching the specified name."); } } catch (Exception excep) { ExceptionLogger.SendErrorToText(excep); } return model; }
Функция Сохранения
<pre> public void SaveStatistics(BizTalk entity) { List<BizTalk> ServerInfo = new List<BizTalk>(); ServerInfo = GetBizTalkServicesStatistics(); foreach (var di in ServerInfo) { entity.RunDate = di.RunDate; entity.Name = di.Name; entity.Status = di.Status; entity.Uri = di.Uri; entity.InstanceName = di.InstanceName; entity.ReceivePort = di.ReceivePort; entity.TransportType= di.TransportType; entity.RunDate = DateTime.Now; entity.ReceiveHandler = di.ReceiveHandler; entity.ServerId = entity.ServerId; entity.ApplicationId = entity.ApplicationId; appEntities.BizTalk.Add(entity); appEntities.SaveChanges(); } }
Что я упускаю?
Что я уже пробовал:
Когда я перехожу через переменную кода envVarProperties показывает количество записей как 125 в разделе envVarProperties << ResultsView :
https://drive.google.com/file/d/1Tdzu-6OIoyRNEpLgeqntX8lCnnqNBZAy/view?usp=sharing
в то время как QueryCol переменная показывает количество 5 :
https://drive.google.com/file/d/1TdkPFD43awRBfQOceZ4luZlpNU7rLe03/view?usp=sharing