EF6 создает новую не нужную запись
В этом месте объекту truck присваивается объект trafficcolor.
if (!CheckTruckAssigned(truck.TruckNumber) && !await CheckInactiveStatus(truck.TruckNumber))
{
truck.TrafficColor = await _ratingService.GetTrafficColor(truck);
context.Trucks.Add(truck);
context.SaveChanges();
}
Помимо создания нового объекта truck, ef6 создает и новый объект trafficcolor я не пойму почему и зачем.
Вот метод GetTrafficColor, в нем создаётся отдельный контекст.
public async Task<TrafficColor> GetTrafficColor(Truck truck)
{
try
{
TrafficColor color = null;
var rating = await GetRatingCache(truck);
if (rating == null)
{
rating = new RatingCache()
{
Score = 1,
DepotCode = truck.DepotCode,
TMSTruckTypeId = (int)truck.TruckTypeId
};
}
//Рейтинг авто
int score = await GetTruckRatingAsync(truck.TruckNumber);
int constant = 100;
int percent = (score * constant) / rating.Score;
using (ApplicationDbContext context = new ApplicationDbContext())
{
var dev = context.DepotAndAKs.FirstOrDefault(dak => dak.DepotCode == truck.DepotCode);
int trafficDeviation = dev.PercentDeviation + constant;
if (percent > trafficDeviation)
{
color = context.TrafficColors.FirstOrDefault(tc => tc.Code == "Green" && tc.TMSTruckTypeId == truck.TruckTypeId);
}
else if (percent < trafficDeviation)
{
color = context.TrafficColors.FirstOrDefault(tc => tc.Code == "Red" && tc.TMSTruckTypeId == truck.TruckTypeId);
}
else
{
color = context.TrafficColors.FirstOrDefault(tc => tc.Code == "Yellow" && tc.TMSTruckTypeId == truck.TruckTypeId);
}
}
return color;
}
catch (Exception ex)
{
Log.Write(ex, Config.PathToServer, "Ошибка в GetTrafficColor - " + ex.Message);
return null;
}
}