随笔 - 21  文章 - 0 评论 - 18 trackbacks - 0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

昵称:Elvin Chen
园龄:2年
粉丝:4
关注:0

搜索

 

常用链接

我的标签

随笔档案

友链

最新评论

阅读排行榜

评论排行榜

推荐排行榜

摘要: 装了NLOG 2.0的MSI安装包,按说在C#代码里键入nlogger后tab一下,就能自动弹出private static Logger logger = LogManager.GetCurrentClassLogger();的代码的,但是在我的两台机器上都不工作。原因是NLOG的MSI安装包把CSharpLogger.snippet文件装到了C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\Snippets\1033\Visual C#下,而VS 2010实际上是去看C:\Program Files (x86)\Microsof阅读全文
posted @ 2011-08-05 18:00 Elvin Chen 阅读(21) 评论(0) 编辑
摘要: 其实应该算是补遗了,之前的一篇随笔曾经介绍了如何在XPO中为非主键字段获取Int型自增量,但今次在实际应用中发现该段代码是有问题的。最大的问题,它并不线程安全的,这一点在今天的一个Parallel.For测试中暴露无遗。原代码使用一个MaxIdGenerationAttempts = 7的常量来控制重试次数,如果发现当前保存操作引发了LockingException则歇一段时间重试。这样有2个问题,一来它并没有根本上解决线程安全问题,在并发量稍高一点的情况下,某条不走运的线程重试了7次依然无法成功完成操作后还是会引发异常;二来多次的读写尝试耗费了大量的时间。加大这个常量可以延后引发异常的时间点阅读全文
posted @ 2011-07-25 16:58 Elvin Chen 阅读(58) 评论(1) 编辑
摘要: 在上一篇随笔中记录了“多语言”的图片机制,那样的好处显而易见,但实际上却引入了另一个问题。在讨论该问题之前,先要做一点说明。Sitecore在默认设置下,当前浏览对话的语言偏好是保存在cookie里的。换句话说,有可能我们浏览的同一个页面的不同的语言版本,在浏览器中的URL是一模一样的。现在我们来看问题:假如我们现在有一个产品在如下的URL:www.somesite.com/product1.aspx在sitecore的preview中它很正常,但当我们在preview里把语言版本切换成中文时会发现,所有的文字内容都正确的切换了版本,但图片依旧是英文版。而按一下F5刷新以后,图片才会变成正确的阅读全文
posted @ 2011-06-24 18:29 Elvin Chen 阅读(109) 评论(0) 编辑
摘要: Sitecore本身可以很方便的对各类文字类型的数据进行多语言的管理,除了默认的英语以外,只需要在sitecore中增加一个语言,例如中文,那么所有在~/sitecore/content下的项都可以创建中文版本。这对文字类型的数据进行多语言的管理非常方便。但实际上,对于“数据”类的图片,我们也可以并且也应该进行“多语言”的管理。这里我对“数据”类的图片是指包含了“数据”的图片,为了和用以做布局的背景图一类的图片做区分。例如产品的照片里,出现不同的语言文字是很常有的;甚至针对不用语言地区的用户,产品的包装都是不同的。而sitecore的media library里上传图片,默认的类型是unver阅读全文
posted @ 2011-06-24 18:06 Elvin Chen 阅读(40) 评论(0) 编辑
摘要: 在学习Sitecore Startkit时发现他们在~/sitecore/content/建立了一个名为Meta-Data的文件夹,并且将一些网站有关的元数据都保存在这个文件夹下,例如菜单的样式,当前套用的主题等。可是当我在跟随startkit学习时却发现无论如何也无法在~/sitecore/content下新建文件夹,折腾了半天,最后发现原来所谓的新建“文件夹”,依然是插入一个类型为"folder"的template而已:在~/sitecore/content/下新建文件夹的方法:插入一个~/templates/common/FolderFolder当然也可以嵌套,继续插阅读全文
posted @ 2011-06-24 17:17 Elvin Chen 阅读(42) 评论(0) 编辑
摘要: MembershipProvider做ASP.NET的朋友们应该都很熟悉了,对简单的项目很好用。MS也给了现成的SqlMembershipProvider,但正如它的名字所暗示的,它也只能用在SqlServer上。空的时候就用XPO自己实现了一套MembershipProvider,可以简单的用在几乎所有的数据库上了,也易于扩展。其中也顺便集成了Michael Proctor 的[XPO_Easy...阅读全文
posted @ 2010-09-26 15:36 Elvin Chen 阅读(547) 评论(1) 编辑
摘要: 之前写过一个XPO初始化类,刚学了个DataStoreFork,改造了一下:[代码]用法和之前的一样,注意在Config文件的AppSetting节里要增加一条: <add key="DatabaseMaxConnections" value="2"/>Value应该>=1,<=数据库服务器的CPU核心数。如果没有这一节,或者Value<=1,则不会使用DataSto...阅读全文
posted @ 2010-09-26 15:18 Elvin Chen 阅读(157) 评论(0) 编辑
摘要: 一般来说的废话,ASP.NET总是多用户访问的应用。这对IIS和ASP.NET不成问题,但是在默认情况下, XPO Data Layer 只创建一个数据库连接对象,那么当有2个用户同时访问数据库时,后一个用户则必须等待前一个用户的查询结束才能继续。理论上我们可以为每一个Page甚至每一次用户访问都创建一个DataLayer,但创建DataLayer是一个相对昂贵的过程,这么做并不现实。如果能有一组...阅读全文
posted @ 2010-09-26 15:08 Elvin Chen 阅读(93) 评论(0) 编辑
摘要: XPO Classes ComparisoneXpress Persistent Objects>Feature Center>Data Representation>XPObject> XPO Classes ComparisonThere are four classes from which you can derive your persistent objects...阅读全文
posted @ 2010-09-09 17:11 Elvin Chen 阅读(97) 评论(0) 编辑
摘要: 数据库中的一条记录,除了应有自己的唯一切不包含任何逻辑意义的主键外,常常也需要一些暴露给最终用户的,User-Friendly的唯一编号。例如用户、订单之类的对象,除了自己有一个可能是GUID类型的主键以外,常常还会有一个Int型的编号“用户编号”,“订单号码”。如果直接操作数据库,例如SQL SERVER,这是很容易的,只需要将字段设成Identi...阅读全文
posted @ 2010-07-01 19:08 Elvin Chen 阅读(208) 评论(0) 编辑