SimpleData问题
我有两张桌子:公司和产品。当我查询并获得满足特定条件的所有公司的产品时,我希望每次返回时都会随机排序结果。我怎么做?
此外,
我很想,(如果你可以帮忙)每个公司拥有最多的产品数量。所以
Database.Default.Products.All().Where(Database.Default.Products.Companies.Status=3)
将返回所有产品,但我只想要最多3个或每个。
答案 0 :(得分:3)
没有内置支持这样做,因为它在Simple.Data支持的不同SQL和NoSQL数据库中实现的方式太多了。
最好的办法是将搜索实现为存储过程,您可以从Simple.Data中调用它,就像它是数据库对象上的方法一样。
假设您正在使用SQL Server,那将是
CREATE PROCEDURE RandomProductSearch(@Status int, @Take int)
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (@Take) Products.*
FROM Products
JOIN Companies ON Products.CompanyId = Companies.CompanyId
WHERE Companies.Status = @Status
ORDER BY NEWID()
END
然后您可以从Simple.Data中调用,如下所示:
var products = Database.Default.RandomProductSearch(3,10);
希望有所帮助。