这是我试图转换为LINQ的查询示例:
SELECT *
FROM Users
WHERE Users.lastname LIKE '%fra%'
AND Users.Id IN (
SELECT UserId
FROM CompanyRolesToUsers
WHERE CompanyRoleId in (2,3,4) )
Run Code Online (Sandbox Code Playgroud)
CompanyRolesToUsers和之间存在FK关系Users,但它是多对多的关系,并且CompanyRolesToUsers是联结表.
我们已经构建了大部分网站,并且我们已经通过使用PredicateExtensions类构建Expressions来完成大部分过滤工作.
简单过滤器的代码如下所示:
if (!string.IsNullOrEmpty(TextBoxLastName.Text))
{
predicateAnd = predicateAnd.And(c => c.LastName.Contains(
TextBoxLastName.Text.Trim()));
}
e.Result = context.Users.Where(predicateAnd);
Run Code Online (Sandbox Code Playgroud)
我正在尝试在另一个表中为子选择添加谓词.(CompanyRolesToUsers)
我希望能够添加的内容是:
int[] selectedRoles = GetSelectedRoles();
if( selectedRoles.Length > 0 )
{
//somehow only select the userid from here ???:
var subquery = from u in CompanyRolesToUsers
where u.RoleID in selectedRoles
select u.UserId;
//somehow transform …Run Code Online (Sandbox Code Playgroud) 如果控制器操作在操作上指定了OutputCache属性,是否有任何方法可以清除输出缓存而无需重新启动IIS?
[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
var someModel = SomeModel.Find( param1, param2 );
//set up ViewData
...
return RenderToString( "ViewName", someModel );
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用HttpResponse.RemoveOutputCacheItem(string path)它来清除它,但是我很难弄清楚应该将它映射到action方法的路径.我将再次尝试使用ViewName呈现的aspx页面.
也许我只是手动插入的输出RenderToString入HttpContext.Cache,而是如果我不明白这一个.
更新
请注意,OutputCache是VaryByParam,测试出硬编码路径"/ controller/action"实际上并没有清除outputcache,所以看起来它必须匹配"/ controller/action/param1/param2".
这意味着我可能不得不恢复到对象级缓存并手动缓存输出RenderToString():(
我正在尝试在Kentico中构建的场景是在一个Web部件中进行用户操作,导致重新加载/更新第二个Web部件而不重新加载整个页面.
一个例子是将一个项目添加到购物车:如果用户点击"添加购物项目"按钮(第一个webpart),那么页面标题中购物车(第二个webpart)中的项目总数应该更新而不重新加载整页.
我知道如何使用ASP.NET MVC应用程序执行此操作,但我还没有想出如何使用Kentico执行此操作.
asp.net ×2
ajax ×1
asp.net-mvc ×1
c# ×1
javascript ×1
kentico ×1
linq ×1
linq-to-sql ×1
postback ×1