繁体   English   中英

.NET Core 2.1-实体框架:在添加到数据库之前检查重复项

[英].NET Core 2.1 - Entity Framework: Check for duplicates before adding to DB

在我的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);
    }
}

最快的方法是插入并进行独特的索引打击,并对错误消息做出反应。

或者不要使用存储过程。

根据定义,您对EF所做的任何事情都不是最快的选择。 是的,这并不意味着要放弃所有内容-EF对于80%到95%的操作都是有益的。 只需绕过它就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM