我有这样的SQL(片段)
s -> { return /*your data type*/; }
我把它放在LINQ上
var sSQL = @"DECLARE @HFID INT, @PLServiceID INT, @PLItemID INT
SELECT @HFID = HFId FROM tblClaimAdmin WHERE ClaimAdminCode = @ClaimAdminCode AND ValidityTo IS NULL
SELECT @PLServiceID = PLServiceID FROM tblHF Where HFid = @HFID
SELECT @PLItemID = PLItemID FROM tblHF Where HFid = @HFID
以前,只有一个查询到数据库。
现在我有3
它在现实中如何运作?慢很多吗?
可以建造得更好吗?
答案 0 :(得分:1)
这会比较慢,是的(可能不一致),因为往返次数更多。将其转换为UNION
或带有3个OUT
参数的存储过程。然后,您可以一并实现。
我个人使用SP。 SQL到Linq的问题确实让我很烦:)已经有一个解决方案,但是通过使用Linq
让它“更好”答案 1 :(得分:0)
对FirstOrDefault()
的调用的确会执行对数据库的查询,因此您要进行三个单独的查询。
如果担心避免性能,则应检查数据库的索引和统计信息。有时使用Linq或其他ORM,执行的查询不是您想的那样,因为ORM确实会解释要查询并在后台执行SQL。
很有可能,您应该执行一个查询,而不是执行三个单独的查询,例如:
from ca in context.TblClaimAdmin
join hf in context.TblHf on ca.Hfid equals hf.Hfid
where
ca.ClaimAdminCode == model.claim_administrator_code
&& ca.ValidityTo == null
select new {
ca.Hfid,
hf.PlserviceId,
hf.PlitemId
}