.NET Core 2.1 - Entity Framework: проверьте наличие дубликатов перед добавлением в БД - PullRequest
0 голосов
/ 23 января 2019

В моей БД SQL Server у меня есть таблица данных IOT (около 1 000 000 записей). Когда приложение получает входящие показания, я хочу убедиться, что в БД еще нет показаний для этого устройства с такой же отметкой времени. Какой самый быстрый способ проверить записи с подходящими свойствами?

Модель

public class Reading
{
    public int Id { get; set; }
    public double Measurement { get; set; }
    public int DeviceId { get; set; }
    public Device Device { get; set; }
    public DateTime Timestamp { get; set; }
}

Метод AddReading

public class ReadingRepository
{
    private readonly DataContext _context;

    public ReadingRepository(DataContext context)
    {
        _context = context;
    }

    public void AddReading(Reading reading)
    {
        // my proposed method... is there a better way?
        if (!_context.Readings.Any(r =>
            r.DeviceId == reading.DeviceId,
            r.Timestamp == reading.Timestamp))
            _context.Readings.Add(reading);
    }
}

1 Ответ

0 голосов
/ 23 января 2019

Самый быстрый способ - вставить и обработать уникальный индексный индекс и отреагировать на сообщение об ошибке.

Альтернатива - использовать хранимую процедуру.

Все, что вы делаете с EF, будет по определению НЕбыть самым быстрым выбором.И да, это не означает отказ от всего этого - EF подходит для 80–95% операций.Просто обойдите это для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...