小编Ale*_*nzi的帖子

SQL联盟到NHibernate标准

有一种方法可以将这个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.

sql sqlite nhibernate sybase hibernate

6
推荐指数
1
解决办法
7991
查看次数

NHibernate Envers:无法在对象中插入重复键

我正在使用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)

c# nhibernate hibernate-envers

6
推荐指数
1
解决办法
1677
查看次数

具有Enum参数的方法的Web API帮助页面

我正在使用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

5
推荐指数
1
解决办法
3780
查看次数

SwaggerUI 不适用于 API 版本控制

我正在尝试使用 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.Foohttp://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)

versioning asp.net-web-api swagger swagger-ui

5
推荐指数
0
解决办法
1702
查看次数

验证请求内容类型

我正在尝试在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)

c# asp.net-web-api

5
推荐指数
1
解决办法
5361
查看次数

未触发TryValidateObject和IValidatableObject

我有一个简单的问题(或不是).

为什么当我验证我的对象时,下面的代码每次验证一个部分.

如果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)

c# validation data-annotations c#-4.0

5
推荐指数
1
解决办法
492
查看次数

C/C++:1.00000 <= 1.0f = False

有人可以解释为什么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++ for-loop floating-accuracy

5
推荐指数
2
解决办法
1014
查看次数