gpt4 book ai didi

c# - SQL 搜索多个列的多个值列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:12 24 4
gpt4 key购买 nike

我可能有一个稍微幼稚的问题,但我以前从未使用过数据库。我是一名 .NET 工程师,我使用 Dapper 访问 SQL Server 数据库。

情况如下:我有一个非规范化表,用于保存多种类型的实体。每一个都有一个组合键(type,id,owner_id),键的每一行都是字符串类型(但不重要)。而且,比方说,我正在将不同用户的许多兴趣写入数据库(批量发布)。为了让它们不重复,我需要进行查询并确定哪些已经存在于数据库中。

所以,我的 InterestService 类中有这段代码:

private IEnumerable<Interest> GetAlreadyExistingInterestsFor(IEnumerable<Interest> interestsForCreating) =>
_interestRepository.GetInterests(interestsForCreating.Select(interest => interest.Id).ToList(),
interestsForCreating.Select(interest => interest.UserId).ToList());

之后我有一些逻辑等等。这并不重要。

InterestRepository 方法 GetInterests 如下所示:

public GetInterests(IList<string> interestIds, IList<string> userIds) 
{
var query = @"SELECT type, id, owner_id
FROM entities
WHERE type = 'interest'
AND id IN @InterestIds
AND owner_id IN @UserIds";
return _dbContext.ExecuteQuery(query, new { InterestIds = interestIds, UserIds = userIds });
}

代码可能有错误,因为现在我无法访问工作环境,但我认为这个想法很清楚。所以,问题是这是否是进行查询的最佳方法。如果有更好的,那是什么。

最佳答案

本质上,您可以简单地执行本文中所做的操作,但表值参数使用两组而不是一组。 Using Dapper, how do I pass in the values for a sql type as param?

它使用存储过程和 sql 表值参数。

关于c# - SQL 搜索多个列的多个值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com