我在asp.net mvc网站的应用程序启动例程中缓存了一个特定的EF实体列表。
protected void Application_Start()
{
CountriesDbContext db = new CountriesDbContext();
HttpRuntime.Cache["Countries"] = db.Countries.ToList();
}
当我在下面请求它时,我放松了重音不敏感的行为
private List<Country> cache = (List<Country>)HttpRuntime.Cache["Countries"];
//Accent insensitive behaviour is lost !
results = cache.Where(c => c.FR.ToLower()
.Contains(search.ToLower())); //for example : e will not match é
如果我要求它&#34;通常&#34;使用dbContext保留重音不敏感行为。
private CountriesDbContext db = new CountriesDbContext();
//Accent insensitive behaviour search
results = db.Countries.Where(c => c.FR.ToLower()
.Contains(search.ToLower())); //for example : e will match é
为什么?以及如何在缓存实体时保留重音不敏感行为?
答案 0 :(得分:1)
排序规则是一种SQL Server概念,这就是查询对数据库数据起作用的原因,但不适用于.Net比较适用的内存数据。
所以你需要在.Net中为你的缓存实现一个不区分重音的比较器,如this answer中所示。