我正试图用NHibernate模拟主题查询IQueryOver.到目前为止我有
var q = CurrentSession.QueryOver<ObjectModel.Order>().
WhereRestrictionOn(o => o.Buyer.ID).IsIn(partyIDs).
WhereRestrictionOn(o => o.Seller.ID).IsIn(partyIDs);
Run Code Online (Sandbox Code Playgroud)
但是,这会生成一个and查询,而我需要or在两个where子句之间有一个运算符.
这是怎么做到的IQueryOver?
是否可以在验证摘要消息中放置HTML链接?例如,我想在有验证错误的情况下将链接放到另一个页面:
@Html.ValidationSummary(False, "read <a href=""anotherpage.html"">more</a>")
Run Code Online (Sandbox Code Playgroud)
要么
@Html.ValidationSummary(False, "read " &
Html.ActionLink("more", "helpforerror").ToHtmlString)
Run Code Online (Sandbox Code Playgroud)
但是在浏览器中,标签被转义,因此它不会形成链接.
我有一个非常复杂的对象图,我想一举加载.
样本具有Daylog,其具有Daylog测试,其具有Daylog结果
Daylog测试具有Testkeys,Daylog结果具有Resultkeys,TestKeys具有Resultkeys.
我正在使用QueryOver API和Future将这些全部作为一个查询运行,NHibernate应该需要实例化整个图形IS所需的所有数据,并由NHProf进行验证.
public static IList<Daylog> DatablockLoad(Isession sess,
ICollection<int> ids)
{
var daylogQuery = sess.QueryOver<Daylog>()
.WhereRestrictionOn(dl => dl.DaylogID).IsIn(ids.ToArray())
.Fetch(dl => dl.Tests).Eager
.TransformUsing(Transformers.DistinctRootEntity)
.Future<Daylog>();
sess.QueryOver<DaylogTest>()
.WhereRestrictionOn(dlt =>
dlt.Daylog.DaylogID).IsIn(ids.ToArray())
.Fetch(dlt => dlt.Results).Eager
.Inner.JoinQueryOver<TestKey>(dlt => dlt.TestKey)
.Fetch(dlt => dlt.TestKey).Eager
.Inner.JoinQueryOver<ResultKey>(tk => tk.Results)
.Fetch(dlt => dlt.TestKey.Results).Eager
.Future<DaylogTest>();
sess.QueryOver<DaylogResult>()
.Inner.JoinQueryOver(dlr => dlr.DaylogTest)
.WhereRestrictionOn(dlt =>
dlt.Daylog.DaylogID).IsIn(ids.ToArray())
.Fetch(dlr => dlr.ResultKey).Eager
.Fetch(dlr => dlr.History).Eager
.Future<DaylogResult>();
var daylogs = daylogQuery.ToList();
return daylogs;
}
Run Code Online (Sandbox Code Playgroud)
但是,我仍然最终使用代理来表示Testkey和ResultKey之间的关系,即使我特意加载了这种关系.
我认为整个查询可能代表对QueryOver API的理解不足,所以我想要任何和所有建议,但主要是,我想了解为什么我得到一个代理而不是后面的结果列表我试着得到daylogresult.resultkey.testkey.results.
有帮助吗?
我想首先将Entity Framework 5数据库添加到Visual Studio 2012中针对.net framework 4.5的类库中.我对所有需要键入的标签感到困惑:
用ADO.NET实体数据模型设计器打开MyEF.edmx,查看MyModel的属性,有:
将某些内容放入edmx自定义工具命名空间似乎没有做任何事情.我得到了这个结论,因为当我grep整个源代码文件夹时,我发现它只在一个vbproj文件中.
将'TheModel'放入MyEF.tt自定义工具命名空间会产生MyEF.Context.vb错误,说明类型'MyTable'(这是我的数据库表的名称)未定义.
有人可以解释每个标签的目的吗?
如果我想将这个edmx(DbContext,模型等)生成的所有类放入一个名称空间"MyEF"中,我应该在每个地方放置什么?
我看到一些代码示例在创建新的DbContext时将实体框架连接字符串作为构造函数参数.但是当我将新的ADO.NET实体数据模型添加到项目(数据库优先)中时,DbContext只有一个无参数构造函数.
我错过了一步吗?我该怎么做才能得到那个构造函数?
Visual Studio 2012目标.net框架4.5实体框架5.
如何创建一个查询,该查询为我提供了SQL Server中具有复合主键的表的列表?也许使用sys.tables或information_schema.tables或其他?
我需要检查某个时区是否仍在指定日期内。类似于DateTime.Today == DateTime.Parse("2016-06-30")但对于某些时区。最好的方法是什么?
这是在SQL Server 2005中我有一个varchar栏和一些行包含尾随的空间,例如abc,def.
我尝试使用此命令删除尾随空格:
update thetable
set thecolumn = rtrim(thecolumn)
Run Code Online (Sandbox Code Playgroud)
但尾随空间仍然存在.我试图找到它们使用:
select *
from thetable
where thecolumn <> rtrim(thecolumn)
Run Code Online (Sandbox Code Playgroud)
但它没有任何回报.
是否有一些我不知道会影响尾随空间检查的设置?
编辑:
我知道SSMS有尾随空格,当我将值从网格粘贴到编辑器时,它有尾随空格.
我在ASP.NET MVC 3应用程序中有一个动作过滤器,需要注入一些依赖项.我使用Autofac.Mvc3作为依赖注入器.
根据autofac wiki,我只需要注册我想要注入的类型,调用RegisterFilterProvider,并在我的动作过滤器上放置一个公共属性,然后autofac将在过滤器实例化期间用正确的对象填充属性.
以下是我的操作过滤器的一部分:
Public Class LogActionAttribute
Inherits ActionFilterAttribute
Property tracer As TraceSource
Public Overrides Sub OnActionExecuting(filterContext As System.Web.Mvc.ActionExecutingContext)
...
tracer.TraceData(...)
...
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
这是我的global.asax的一部分:
Public Class MvcApplication
Inherits System.Web.HttpApplication
Shared Sub RegisterGlobalFilters(ByVal filters As GlobalFilterCollection)
filters.Add(New MyHandleErrorAttribute)
filters.Add(New LogActionAttribute)
End Sub
Sub Application_Start()
InitSettingRepoEtc()
...
End Sub
Protected Shared Sub InitSettingRepoEtc()
...
Dim builder = New ContainerBuilder
builder.RegisterControllers(Reflection.Assembly.GetExecutingAssembly)
...
builder.Register(Of TraceSource)(
Function(x) New TraceSource("requests", SourceLevels.All)).InstancePerHttpRequest()
...
builder.RegisterFilterProvider()
Dim container = builder.Build …Run Code Online (Sandbox Code Playgroud)