小编Mat*_*tt0的帖子

搜索页面MVC路由(隐藏动作,没有斜线,如SO)

我希望我的搜索类似于Stack Overflow中的搜索(即没有动作,没有斜线):

mydomain.com/search                        --> goes to a general search page  
mydomain.com/search?type=1&q=search+text   --> goes to actual search results  
Run Code Online (Sandbox Code Playgroud)

我的路线:

routes.MapRoute(  
  "SearchResults",  
  "Search/{*searchType}",      --> what goes here???  
  new { action = "Results" }  
);  
routes.MapRoute(  
  "SearchIndex",  
  "Search",  
  new { action = "Index" }  
);  
Run Code Online (Sandbox Code Playgroud)

我的SearchController有以下动作:

public ActionResult Index() { ... }  
public ActionResult Results(int searchType, string searchText) { ... }  
Run Code Online (Sandbox Code Playgroud)

搜索结果路线不起作用.我不想使用每个人似乎都在使用的".../..."方法,因为搜索查询不是资源,所以我希望查询字符串中的数据如我所指出的那样,没有斜线 - 就像SO一样.

TIA!马特

asp.net-mvc asp.net-mvc-routing

6
推荐指数
1
解决办法
794
查看次数

多关系中的多级联删除路径(EF 4.1)

表格:

Shop
Product
Category
Run Code Online (Sandbox Code Playgroud)

关系:

      (Shop) 1 <---> n (Categories)
      (Shop) 1 <---> n (Products)
(Categories) n <---> n (Products)
Run Code Online (Sandbox Code Playgroud)

级联删除:

      Shop  ---> Categories ... I defined this using fluent API
      Shop  ---> Products   ... I defined this using fluent API
Categories <---> Products   ... EF 4.1 automatically defines cascade for "Category_Product" join table
Run Code Online (Sandbox Code Playgroud)

问题: 上面导致"多个"级联删除路径异常.

可能的修正:

  1. 删除ManyToManyConvention,但这意味着我必须为系统中的每个连接表手动执行删除操作,这是不切实际的.
  2. 我可以从Shop-> Category或Shop-> Products中删除级联删除.但后来我可能会有很多孤立的记录.

你是怎么处理这个问题的?

谢谢

sql-server entity-framework poco ef-code-first entity-framework-4.1

5
推荐指数
1
解决办法
2320
查看次数

每次访问导航属性时都会读取它们吗?(EF4.1)

我正在使用 EF 4.1,带有延迟加载的 POCO。

我运行的一些示例查询:

var discountsCount = product.Discounts.Count();  
var currentDiscountsCount = product.Discounts.Count(d=>d.IsCurrent);  
var expiredDiscountsCount = product.Discounts.Count(d=>d.IsExpired);  
Run Code Online (Sandbox Code Playgroud)

我想知道的是,我的查询是否有意义,或者性能不佳:

我是每次都访问数据库,还是结果来自 DbContext 中的缓存数据?

每次都可以“从头开始”访问导航属性,如上所述,还是应该缓存它们然后对它们执行更多查询,例如:

var discounts = product.Discounts;  
var current = discounts.Count(d=>d.IsCurrent);  
var expired = discounts.Count(d=>d.Expired);  
Run Code Online (Sandbox Code Playgroud)

对于像下面这样的复杂情况,它是拉取整个集合然后对其执行本地操作,还是构造了一个专门的 SQL 查询,这意味着我无法重用结果以避免再次访问数据库:

var chained = discounts.OrderBy(d=>d.CreationDate).Where(d=>d.CreationDate < DateTime.Now).Count();
Run Code Online (Sandbox Code Playgroud)

感谢您的建议!

根据以下评论进行编辑

所以一旦我调用一个导航属性(它是一个集合),它就会加载整个对象图。但是,如果我使用.Count(d=>d...)orSelect(d=>d...)Min(d=>d...)等过滤该集合呢?它是否也加载整个图形,或者仅加载最终数据?

entity-framework poco ef-code-first entity-framework-4.1

1
推荐指数
1
解决办法
972
查看次数