我正在开发一个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())- 更改流畅的界面?
我有一个带有下表的遗留数据库(注意:没有主键)
它为每个住宿"单位"和日期以及该日期的价格定义了每条记录.
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) 我创建了一个.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) 我正在使用microsoft的CDN来下载Ajax库.我在某些页面上使用SSL.
这个URL在Firefox和IE中解析得很好:
https://ajax.microsoft.com/ajax/4.0/MicrosoftAjax.js
然而,在谷歌浏览器(在我的电脑上,今天......)似乎有一个非常奇怪的回应超时:

在其他PC上,它似乎工作正常,但我知道我不是唯一一个遇到问题的人,因为我们偶尔会有一些客户抱怨某些页面超时和失败,这似乎指向同样的问题.
(免责声明:我不是Java程序员,我真的很想不到我在Eclipse中做了什么)
我在Eclipse中删除了一个应用程序,最后我完成并导出为JAR,运行得很好.我没有做任何笔记或发表任何评论.
是时候对项目进行一些更改了,但是我必须重新加载它,因为我的PC已经被擦除所以一些设置等可能已经改变了.
无论如何,它都可以在Eclipse中运行并运行良好.但是当我导出为可运行的JAR,并双击运行应用程序时,它似乎没有执行.
我可以看到有一个javaw运行的实例,但没有窗口出现.没有错误.纳达.
正如我所说,它在Eclipse中运行得非常好.有任何想法吗?
我几乎不知道如何检测发生了什么 - 正如我所说,我不是一个java程序员:-)
对于Accommodation实体,我们有两列可以为空的列:CollectionType和AccommodationUnitType.
但是我在数据中注意到它们被设置为零而不是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) 要按多个条件对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)
有关良好实现流畅界面排序的任何想法?
我正在把头发拉出来...
我有一个几年前构建的使用AutoItX的旧应用程序-一切正常。
现在是时候尝试更新应用程序了,所以我已经将其升级到VS2012 / .NET4,而我根本无法获得对AutoItX库的引用。
我已经安装了该应用程序,并在regsvr32中注册了该dll,并尝试在引用本身(嵌入互操作类型/隔离)上进行属性设置的每种组合,但没有任何乐趣。
每当我尝试创建AutoItX3对象时,我一直收到的错误是:
由于以下错误,未能为具有CLSID {1A671297-FA74-4422-80FA-6C5D8CE4DE04}的组件检索COM类工厂:80040154未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。
我在64位计算机上是否有问题?我不尝试使用64位DLL版本。
session.CreateMultiQuery().Add(...) 接受IQuery,但IQueryOver似乎不从IQuery继承.
对我来说似乎很奇怪,我无法在多个查询中使用QueryOver?
MSDN文档声明EntitySet实现IBindingList
(请参阅http://msdn.microsoft.com/en-us/library/bb546190.aspx上的 "绑定到EntitySets" )
但是,可以清楚地看到EntitySet没有实现此接口!
那我怎么排序?
对于上下文,我将此集绑定到WPF ListView.
对于我试图解决的问题的更广泛的背景,请看这篇文章.
我通过这种方式从嵌套 JSON 填充 Kendo 数据网格:
一切正常,直到我单击“添加新行”按钮。
然后我收到控制台错误消息:
“未捕获类型错误:无法读取未定义的属性‘街道’”
我想问如何正确格式化数据以获得包含更新数据的嵌套JSON对象?
非常感谢您的任何建议。
nhibernate ×3
c# ×2
sorting ×2
.net ×1
autoit ×1
cdn ×1
com ×1
data-binding ×1
eclipse ×1
entityset ×1
https ×1
java ×1
javascript ×1
json ×1
kendo-grid ×1
linq-to-sql ×1
multi-query ×1
nested ×1
nullable ×1
performance ×1
queryover ×1
sql ×1
sql-server ×1
ssl ×1
t-sql ×1