小编Chr*_*nes的帖子

使用SysCache跨会话的NHibernate缓存实体

我正在开发一个Web应用程序,我希望缓存在Web请求中持续存在.我知道第一级缓存只是每个会话.我启用了二级缓存,这适用于查询.

但是,二级缓存似乎不适用于"获取"实体...因此,应用程序所做的大部分数据库工作都不会跨Web请求进行缓存.

这是正常/理想的行为吗?我正在审查一个特定的页面,它会对数据库进行大量的往返,尽管每个查询都很快,如果可以缓存实体,这些似乎是不必要的.

编辑

好的,所以我启用了二级缓存,并且正在进行查询.我似乎无法让它为实体工作.我Cache.Is(c => c.ReadWrite())在我正在测试的主要实体上(流利的nhibernate).但不,它每次都会击中数据库.有任何想法吗?

编辑

我尝试过这样的交易:

public override Accommodation Get(int id) 
{ 
    using (var tx = Session.BeginTransaction()) 
    { 
        var accomm = Session.Get<Accommodation>(id); 
        tx.Commit(); 
        return accomm; 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我的映射是这样的(你可以看到我们有一个讨厌的架构):

public void Override(AutoMapping<Core.Entities.Itinerary.Accommodation.Accommodation> mapping)
{
    mapping.HasManyToMany(x => x.Features).Table("AccommodationLinkFeatureType").ChildKeyColumn("FeatureTypeId").NotFound.Ignore();
    mapping.HasManyToMany(x => x.SimilarAccommodation).Table("AccommodationLinkSimilarAccommodation").ChildKeyColumn("SimilarAccommodationId").NotFound.Ignore();
    mapping.HasMany(x => x.TourItinerary).Table("AccommodationTourItinerary");
    mapping.HasOne(x => x.Images).ForeignKey("AccommodationId").Cascade.All().Not.LazyLoad();
    mapping.References(x => x.CollectionType).NotFound.Ignore().Not.LazyLoad();
    mapping.References(x => x.AccommodationUnitType).NotFound.Ignore().Not.LazyLoad();
    Cache.Is(c => c.ReadWrite());
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎仍然没有从二级缓存中获取.

顺便说一句,我看到很多在线使用的例子,Cache.ReadWrite()但我只能Is在Cache帮助器上看到一个方法,所以我正在尝试Cache.Is(c => c.ReadWrite())- 更改流畅的界面?

nhibernate second-level-cache

8
推荐指数
1
解决办法
1537
查看次数

使用三重自联接执行缓慢的SQL查询

我有一个带有下表的遗留数据库(注意:没有主键)

它为每个住宿"单位"和日期以及该日期的价格定义了每条记录.

CREATE TABLE [single_date_availability](
    [accommodation_id] [int],
    [accommodation_unit_id] [int],
    [arrival_date] [datetime],
    [price] [decimal](18, 0),
    [offer_discount] [decimal](18, 0),
    [num_pax] [int],
    [rooms_remaining] [int],
    [eta_available] [int],
    [date_correct] [datetime],
    [max_occupancy] [int],
    [max_adults] [int],
    [min_stay_nights] [int],
    [max_stay_nights] [int],
    [nights_remaining_count] [numeric](2, 0)
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

该表包含大约16,500条记录.

但我需要以完全不同的格式将数据相乘,例如:

  • 住所
  • 日期
  • 持续时间
  • 总价

每个到达日期的最长持续时间.

我正在使用以下查询来实现此目的:

SELECT
    MIN(units.MaxAccommodationAvailabilityPax) AS MaxAccommodationAvailabilityPax,
    MIN(units.MaxAccommodationAvailabilityAdults) AS MaxAccommodationAvailabilityAdults,
    StartDate AS DepartureDate,
    EndDate AS ReturnDate,
    DATEDIFF(DAY, StartDate, EndDate) AS Duration,
    MIN(units.accommodation_id) AS AccommodationID, 
    x.accommodation_unit_id AS AccommodationUnitID,
    SUM(Price) AS Price,
    MAX(num_pax) AS Occupancy,
    SUM(offer_discount) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server performance

7
推荐指数
1
解决办法
5569
查看次数

使用docker-compose和https时如何让Visual Studio启动正确的URL

我创建了一个.net核心2.0项目,并将其配置为通过HTTPS运行,但是当在Docker调试模式下运行时,我无法让Visual Studio以正确的方案/端口启动浏览器.

当前的行为是VS总是在端口80(HTTP)上启动,因此我每次都必须手动更改URL,这很麻烦.

Program.cs中

public class Program {
    public static void Main (string[] args) {
        BuildWebHost(args).Run ();
    }

    public static IWebHost BuildWebHost (string[] args) =>
        WebHost.CreateDefaultBuilder (args)
        .UseKestrel (options => {
            options.Listen (IPAddress.Any, GetPort(), listenOptions => {
                // todo: Change this for production
                listenOptions.UseHttps ("dev-cert.pfx", "idsrv3test");
            });
        })
        .UseStartup<Startup> ()
        .Build ();

    public static int GetPort() => int.Parse(Environment.GetEnvironmentVariable("Port") ?? "443");
}
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM microsoft/aspnetcore:2.0
ARG source
WORKDIR /app
EXPOSE 443
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.override.yml

version: '3'

services: …
Run Code Online (Sandbox Code Playgroud)

https docker-compose visual-studio-2017 asp.net-core-2.0

7
推荐指数
2
解决办法
2919
查看次数

为什么MicrosoftAjax.js不会在某些PC上加载谷歌浏览器中的SSL?

我正在使用microsoft的CDN来下载Ajax库.我在某些页面上使用SSL.

这个URL在Firefox和IE中解析得很好:

https://ajax.microsoft.com/ajax/4.0/MicrosoftAjax.js

然而,在谷歌浏览器(在我的电脑上,今天......)似乎有一个非常奇怪的回应超时: 在此输入图像描述

在其他PC上,它似乎工作正常,但我知道我不是唯一一个遇到问题的人,因为我们偶尔会有一些客户抱怨某些页面超时和失败,这似乎指向同样的问题.

ssl google-chrome cdn microsoft-ajax

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

从Eclipse导出的可运行JAR文件似乎无法执行

(免责声明:我不是Java程序员,我真的很想不到我在Eclipse中做了什么)

我在Eclipse中删除了一个应用程序,最后我完成并导出为JAR,运行得很好.我没有做任何笔记或发表任何评论.

是时候对项目进行一些更改了,但是我必须重新加载它,因为我的PC已经被擦除所以一些设置等可能已经改变了.

无论如何,它都可以在Eclipse中运行并运行良好.但是当我导出为可运行的JAR,并双击运行应用程序时,它似乎没有执行.

我可以看到有一个javaw运行的实例,但没有窗口出现.没有错误.纳达.

正如我所说,它在Eclipse中运行得非常好.有任何想法吗?

我几乎不知道如何检测发生了什么 - 正如我所说,我不是一个java程序员:-)

java eclipse executable-jar

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

当数据库中的列为空时,导致"此SqlParameterCollection的索引编号为nn = Count = nn"的原因是什么?

对于Accommodation实体,我们有两列可以为空的列:CollectionTypeAccommodationUnitType.

但是我在数据中注意到它们被设置为零而不是null,导致NHibernate尝试找到一个id为0的实体.这是一些额外的不必要的DB调用,所以我在数据库中将相关数据更新为NULL,突然间我发现了一个很大的错误:

"此SqlParameterCollection的索引24无效,Count = 24"

这是我正在使用的映射覆盖:

    public void Override(AutoMapping<Core.Entities.Itinerary.Accommodation.Accommodation> mapping)
    {
        ...
        mapping.References(x => x.CollectionType).Nullable();//.Not.LazyLoad();
        mapping.References(x => x.AccommodationUnitType).Nullable();//.Not.LazyLoad();
        Cache.Is(c => c.ReadWrite());
    }
Run Code Online (Sandbox Code Playgroud)

谷歌有很多答案似乎与我的问题没有任何关系.

有任何想法吗?

编辑 对于信息,属性是实体,因此可以为空:

public virtual AccommodationUnitType AccommodationUnitType { get; set; }
public virtual AccommodationCollectionType CollectionType { get; set; }
Run Code Online (Sandbox Code Playgroud)

nhibernate nullable fluent-nhibernate

4
推荐指数
1
解决办法
4650
查看次数

使用扩展方法对多个条件的List <T>进行流畅排序?

要按多个条件对List进行排序,我现在正在执行以下操作:

collection.Sort((f1, f2) =>
{
    var comp = f1.FirstCriteria.CompareTo(f2.FirstCriteria);
    return comp != 0 ? comp : f1.SecondCriteria.CompareTo(f2. SecondCriteria);
});
Run Code Online (Sandbox Code Playgroud)

但能做这样的事情不是很好吗:

collection.MultipleSort(f1.FirstCriteria, f2.FirstCriteria)
          .Then(f1.SecondCriteria, f2.SecondCriteria)
Run Code Online (Sandbox Code Playgroud)

有关良好实现流畅界面排序的任何想法?

c# sorting extension-methods

3
推荐指数
1
解决办法
3756
查看次数

获取在C#中工作的AutoIt参考

我正在把头发拉出来...

我有一个几年前构建的使用AutoItX的旧应用程序-一切正常。

现在是时候尝试更新应用程序了,所以我已经将其升级到VS2012 / .NET4,而我根本无法获得对AutoItX库的引用。

我已经安装了该应用程序,并在regsvr32中注册了该dll,并尝试在引用本身(嵌入互操作类型/隔离)上进行属性设置的每种组合,但没有任何乐趣。

每当我尝试创建AutoItX3对象时,我一直收到的错误是:

由于以下错误,未能为具有CLSID {1A671297-FA74-4422-80FA-6C5D8CE4DE04}的组件检索COM类工厂:80040154未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。

我在64位计算机上是否有问题?我不尝试使用64位DLL版本。

c# com autoit

3
推荐指数
1
解决办法
4459
查看次数

NHibernate QueryOver可以使用MultiQuery吗?

session.CreateMultiQuery().Add(...) 接受IQuery,但IQueryOver似乎不从IQuery继承.

对我来说似乎很奇怪,我无法在多个查询中使用QueryOver?

nhibernate multi-query queryover

2
推荐指数
1
解决办法
2032
查看次数

如何对EntitySet <T>进行排序

MSDN文档声明EntitySet实现IBindingList

(请参阅http://msdn.microsoft.com/en-us/library/bb546190.aspx上的 "绑定到EntitySets" )

但是,可以清楚地看到EntitySet没有实现此接口!

那我怎么排序?

对于上下文,我将此集绑定到WPF ListView.

对于我试图解决的问题的更广泛的背景,请看这篇文章.

.net sorting data-binding entityset linq-to-sql

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

Kendo Grid:添加嵌套对象停止工作的新行

我通过这种方式从嵌套 JSON 填充 Kendo 数据网格:

/sf/answers/1710892291/

一切正常,直到我单击“添加新行”按钮。

然后我收到控制台错误消息:

“未捕获类型错误:无法读取未定义的属性‘街道’”

我想问如何正确格式化数据以获得包含更新数据的嵌套JSON对象?

非常感谢您的任何建议。

javascript json nested kendo-grid

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