本文共 1490 字,大约阅读时间需要 4 分钟。
在项目的 AspNetForums.Users类中的这个方法:
public static User GetUser (int userID, string username, bool isOnline, bool isCacheable, bool autoCreateUser )
-----------------------------------------------------------
问题一: 如下代码段:// Create a CachedUser struct // cachedUser.User = user; cachedUser.Created = DateTime.Now; // Add user to lookup table // userLookupTable[userKey] = cachedUser;这里每查看一个未缓存的User就向Cache的Hashtable里插入一个键/值对,也就是缓存了这个User对象,那么当有很多用户资料被一一查看后这个缓存的内容是不是太大了?很耗费内存吧?而且有些用户资料可能在查看一遍后再也不会有人来查看,那么放在这里不是很浪费内存么? ----------------------------------------------------------- 另:
在数据库查询的时候(非存储过程),用Command的Parameters.Add()方法添加参数的时候
在原SQL语句中保留参数位置的语法是什么?我看到有些地方用“WHERE UserName = ? ”而有些地方那个是 “WHERE UserName = @UserName”,或者还有其他的写法? 而我在Add();的时候 parameterName 的值都是 @UserName,到底应该怎么用? // 希望各位高手能给与解答,谢谢 A: 问题一: Cache[cacheKey] = object等效于Cache.Insert(cacheKey, object),即等效于: Cache.Insert(cacheKey, object, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Normal) 所以,这个缓存项不会过期(NoAbsoluteExpiration)。 问题二: 是会占用内存,这是性能上的取舍问题。(注:User对象并不很大。) 问题三: 两种方法都可以。前者只按参数的顺序进行替换,而后者会按参数变量名进行替换。更具体的细节请查阅ADO.NET的相关资料。
本文转自浪子博客园博客,原文链接:http://www.cnblogs.com/walkingboy/archive/2005/04/14/137721.html,如需转载请自行联系原作者