有一种方法可以将这个SQL语句转换为NHibernate Criteria吗?
(select b1.FieldA as Name, b1.FieldA as FullName from Sale b1 where b1.FieldA like '%john%' or b1.FieldA like '%john%' order by b1.Id desc)
union
(select b2.FieldC as Name, b2.FieldD as FullName from Sale b2 where b2.FieldC like '%john%' or b2.FieldD like '%john%' order by b2.Id desc)
union
(select c.FieldE as Name, c.FieldF as FullName from Client c where c.FieldE like '%john%' or c.FieldF like '%john%' order by c.Id desc)
Run Code Online (Sandbox Code Playgroud)
我发现NHibernate不支持Unions.
我正在使用Envers来审计表,但它正在为未知/缺席表创建一些审计表.对于Many To One关系,它看起来像是一个多对多关系审计表.
这是正确的吗?如果是的话,为什么?
dbo.HorarioFixo - OK
dbo.HorarioFixo_Auditoria - OK
dbo.HorarioFixo_JanelaHorarioFixo_Auditoria - NOK
dbo.JanelaHorarioFixo - OK
dbo.JanelaHorarioFixo_Auditoria - OK
Run Code Online (Sandbox Code Playgroud)
但是当我尝试删除/删除和HorarioFixo时,我收到了一个错误.
我得到的错误:
NHibernate.Exceptions.GenericADOException
could not execute batch command.[SQL: SQL not available]
em NHibernate.Engine.ActionQueue.BeforeTransactionCompletionProcessQueue.BeforeTransactionCompletion()
em NHibernate.Impl.SessionImpl.BeforeTransactionCompletion(ITransaction tx)
em NHibernate.Transaction.AdoTransaction.Commit()
em Foo.Testes.Servicos.TesteCanalDeTransmissaoService.RemoveDependenciasCorretamente() na TesteCanalDeTransmissaoService.cs: line 195
System.Data.SqlClient.SqlException
Violation of PRIMARY KEY constraint 'PK__HorarioF__450088476960C81E'. Cannot insert duplicate key in object 'dbo.HorarioFixo_JanelaHorarioFixo_Auditoria'.
Violation of PRIMARY KEY constraint 'PK__HorarioF__450088476960C81E'. Cannot insert duplicate key in object 'dbo.HorarioFixo_JanelaHorarioFixo_Auditoria'.
The statement has been terminated.
The statement has been terminated. …Run Code Online (Sandbox Code Playgroud) 我正在使用Web API帮助页面生成器生成我的API文档.但问题是帮助页面生成器无法为具有Enum参数的方法生成文档.对象和动态类型的参数也会出现这种情况.
这是我的方法:
public HttpResponseMessage Get(Status status, DateTime? date = null)
{
...
}
enum Status
{
Avaliable,
Busy,
Canceled,
Failed,
Sent
}
Run Code Online (Sandbox Code Playgroud)
以下是生成文档:
GET api/StatusCheck?date={date}
Run Code Online (Sandbox Code Playgroud)
但正确的形式是:
GET api/StatusCheck?status={status}&date={date}
Run Code Online (Sandbox Code Playgroud)
当我转到API模型文档时,参数就在那里,但是没有描述.
就像这样:
GET api/StatusCheck?date={date}
Unavaliable.
Request
Parameters
Name Description
status Unavaliable.
date Unavaliable.
Run Code Online (Sandbox Code Playgroud)
这是帮助页面生成器中的BUG吗?如何修复我的页面示例?
c# enums asp.net-mvc-4 asp.net-web-api asp.net-web-api-helppages
我正在尝试使用 SwaggerUI,但遇到了一些问题。
当我打电话给http://mysite.com/api/swagger 时,我得到了这个:
{
"apiVersion":"4.0.0.0",
"swaggerVersion":"2.0",
"basePath":"http://mysite.com",
"resourcePath":null,
"apis":
[
{
"path":"/api/docs/V1.Foo",
"description":"Foo V1.",
"operations":[]
},
{
"path":"/api/docs/V2.Foo",
"description":"Foo V2.",
"operations":[]
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,当我调用http://mysite.com/api/docs/V1.Foo或http://mysite.com/api/docs/V2.Foo 时,我得到了这个:
<Error>
<Message>
The requested resource does not support http method 'GET'.
</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)
看起来我正在调用我的 API,但我正在尝试获取 API 文档。
我所有的控制器都实现了 System.Web.Http.ApiController。
这是我的 WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
config.Routes.MapHttpRoute(
name: "SwaggerApi",
routeTemplate: "api/docs/{controller}",
defaults: new { swagger = true }
);
config.Routes.MapHttpRoute( …Run Code Online (Sandbox Code Playgroud) 我正在尝试在POST,PUT和PATCH请求中验证Content-Type的值,但是当我忘记content-type子句或使用内容类型时,当前代码才起作用:"Content-Type:富".
当我发送"Content-Type:text/css"时,我得到了这个:
500 Internal Server Error
No MediaTypeFormatter is available to read an object of type 'MyClassDto' from content with media type 'text/css'.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public class ContentTypeFilter : IActionFilter
{
private readonly List<MediaTypeHeaderValue> _suport;
/// <summary />
public ContentTypeFilterAttribute()
{
_suport = new List<MediaTypeHeaderValue>();
foreach (var formatter in GlobalConfiguration.Configuration.Formatters.ToArray())
{
_suport.AddRange(formatter.SupportedMediaTypes);
}
}
public bool AllowMultiple { get { return false; } }
public Task<HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
var metodos = new List<string> { "POST", "PUT", …Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题(或不是).
为什么当我验证我的对象时,下面的代码每次验证一个部分.
如果DataAnnotations失败,则不会调用IValidatableObject中的Validate.如果DataAnnotations正常,则调用IValidatableObject中的Validate.
我的问题是:为什么?我认为没有理由这样做.我错过了什么吗?
这是我的班级(例如):
class Foo : IValidatableObject
{
[Required]
public DateTime Date { get; set; }
public virtual IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var errors = new List<ValidationResult>();
if (Date.Ticks > DateTime.Today.Ticks)
{
errors.Add(new ValidationResult("Some error.", new[] { "Date" }));
}
return errors;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的验证:
var dto = new Foo();
validationResults = new List<ValidationResult>();
var context = new ValidationContext(dto, null, null);
Validator.TryValidateObject(dto, context, validationResults, true);
// Force
//var model = dto as IValidatableObject;
//if (model != null)
//{ …Run Code Online (Sandbox Code Playgroud) 有人可以解释为什么1.000000 <= 1.0f是假的吗?
代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char **argv)
{
float step = 1.0f / 10;
float t;
for(t = 0; t <= 1.0f; t += step)
{
printf("t = %f\n", t);
cout << "t = " << t << "\n";
cout << "(t <= 1.0f) = " << (t <= 1.0f) << "\n";
}
printf("t = %f\n", t );
cout << "t = " << t << "\n";
cout << "(t <= …Run Code Online (Sandbox Code Playgroud) c# ×4
nhibernate ×2
c#-4.0 ×1
c++ ×1
enums ×1
for-loop ×1
hibernate ×1
sql ×1
sqlite ×1
swagger ×1
swagger-ui ×1
sybase ×1
validation ×1
versioning ×1