c# - Linq 或存储过程 - 我应该选择哪一个?

标签 c# sql-server linq stored-procedures

事件在特定日期的某个位置发生,但每个事件可能会在不同日期的相同或不同位置重复。我创建了一个 Entity Framework 模型,并希望用两个日期之间发生的相关事件填充它,并按距指定位置的位置距离排序。

因此我有以下表格:

事件(A)

出现次数 (O)

位置(左)

关系如下:

A 1-n On-1 L

我在使用 linq to 实体执行此操作时遇到一些困难,但我确信我可以在存储过程中实现它。

这是我应该能够使用 Linq 完成的事情,还是 Linq 创建 Sql 的问题太复杂?如果有任何关于编写 Linq 查询的指示,如果它应该能够做到的话,我们将不胜感激。

最佳答案

我不明白为什么这是不可能做到的,甚至特别困难。是这个问题吗? :)

据我了解,事件表对您的查询并不感兴趣,首先查找出现次数。您可以在输出中包含 Activity 数据,如下所示:

dc.Occurrence.Include("Activity").Where(
    o => o.Date >= startDate && o.Date <= endDate
    && o.Location.DistanceFrom(someLocation) < maxDistance)

DistanceFrom 将是您确定距某个位置的距离的方式。我不知道您的数据库设计如何。

如果您使用的是 SQL Server 2008 地理编码,我认为尚不支持该功能。 This article (和 this continuation )可能会引起兴趣。这是关于 LINQ to SQL 的内容,但表达式构建可能会有所帮助。

关于c# - Linq 或存储过程 - 我应该选择哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351452/

相关文章:

c# - 如何确定表达式是否可写?

sql-server - SQL Server比较两个小数位不正确

sql - 如何优化使用cte、group by并运行20+小时的SQL查询?

sql-server - SQL Server 分页使用限制和偏移量以及非唯一排序列

c# - 在 XAML ResourceDictionary 中绑定(bind)

c# - Google Pay 通行证

c# - 在具有字符串列值的数据表中搜索整数项

c# - 遍历树时查找节点

c# - 如何内部连接来自不同数据上下文的表?

c# - 为什么使用 StreamWriter 在输出中没有写入任何行