我正在构建一个WCF应用程序,使用NHibernate作为持久层.很多文档都是关于将NHibernate与ASP.NET应用程序一起使用的.但在WCF应用程序中管理NHibernate会话的最佳方法却很少.
在阅读了WCF应用程序中的实例管理技术之后,我将使用"每次调用服务".与ASP.NET并行绘制,这就像打开NHibernate会话Application_BeginRequest并关闭它们一样Application_EndRequest.Billy McCafferty的S#arp架构有一个非常优雅的例子.但我发现在WCF应用程序中使用类似的概念有点困难.
任何代码示例或带有示例的博客指针都将不胜感激.
我有一个包含数据的现有RoleType表.我试图使用每个类层次结构的表在NHibernate中映射此表:
<class name="IRoleType" table="RoleType">
<id name="Id" column="RoleID">
<generator class="native" />
</id>
<discriminator column="RoleID" />
<property name="Description" column="Description" />
<!-- ... more properties ... -->
<subclass name="RoleA" discriminator-value="1" />
<subclass name="RoleB" discriminator-value="4" />
<subclass name="RoleC" discriminator-value="7" />
</class>
Run Code Online (Sandbox Code Playgroud)
这里,IRoleType是一个接口,具有实现者RoleA,RoleB和RoleC.这有效.但这是问题 -
该表包含具有"额外"鉴别器值(2,3,5,6)的行,这些行未映射到持久类.这些值在域中已弃用,因此为每个值创建持久类没有用.但我们也无法从数据库中删除它们.
有没有办法将这些额外的行映射到单个"默认"类?如果没有,我还能怎样解决这个问题?
谢谢!
如何查找包含特定文本的存储过程?虽然我知道进行这种搜索的最佳位置是通过源代码控制工具,但有没有办法在数据库中执行此操作?
我有这种方法取决于当前日期.它检查今天是太阳,周一,周二还是周三,然后它给出了5天的交货时间.如果它是星期四,星期五或星期六那么它给出了6天的交货时间来解释周末.
private DateTime GetEstimatedArrivalDate()
{
DateTime estimatedDate;
if (DateTime.Now.DayOfWeek >= DayOfWeek.Thursday)
{
estimatedDate = DateTime.Now.Date.AddDays(6);
}
else
{
estimatedDate = DateTime.Now.Date.AddDays(5);
}
return estimatedDate;
}
Run Code Online (Sandbox Code Playgroud)
实际的估算逻辑更复杂.为了这个问题,我简化了它.我的问题是如何根据今天的日期为这样的事情编写单元测试?
我有一个大的HTML文档,大致有这种结构:
<div id="a">
<!-- more html code here -->
<span id="title">...</span>
<!-- more html code here -->
</div>
<div id="b">
<!-- more html code here -->
<span id="title">...</span>
<!-- more html code here -->
</div>
...
...
<div id="z">
<!-- more html code here -->
<span id="title">...</span>
<!-- more html code here -->
</div>
Run Code Online (Sandbox Code Playgroud)
请注意,外部DIV具有唯一的ID("a","b",...,"z"),但内部SPAN具有非唯一的ID("标题").
例如,要选择DIV"q"内的SPAN,我尝试使用它:
$("#q").find("#title");
Run Code Online (Sandbox Code Playgroud)
这在FF和Chrome上运行得很快,但find()方法需要很长时间才能在IE8(和IE7)中执行.还有其他方法可以做到这一点吗?
如果我能提供任何进一步的信息,请告诉我.