小编Mat*_*zer的帖子

使用Redis的NHibernate二级缓存与仅使用Redis

我的情况是我更喜欢呆在像SQL Server这样的关系数据库存储系统中,因为我需要处理复杂的查询.

然后,因为一些计算会更好地加班,只是将结果存储到Redis或者更传统的NoSQL解决方案中.

这就是我想到的地方:NHibernate上的二级缓存发生了什么?.

我做了一个非常小的研究,我发现有一个Redis二级缓存提供商,现在我感到"困惑".

我的意思是,如果我使用NHibernate的二级缓存,大多数对象访问应该非常快,因为它应该没有数据库往返,因此大多数访问的对象将从内存中的Redis存储中检索.

为什么我要考虑这个而不是直接使用Redis?因为我需要在我的解决方案域中进行实际的原子事务处理.

好的,这个问题?

是否依赖NHibernate的二级缓存Redis提供程序是一个好主意,以便获得最佳的关系和无模式世界?

你的建议是什么?

.net c# nhibernate second-level-cache redis

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

由于NuGet版本不正确,TFS Build 2015失败,即使构建计算机中存在所需的NuGet版本

我正在使用新的脚本系统配置TFS 2015构建.在构建期间,当NuGet重新编译某些包时,它会因以下错误而失败:

'System.Collections 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Diagnostics.Debug 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Globalization 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Linq 4.0.0'软件包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Resources.ResourceManager 4.0.0'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Runtime 4.0.20'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Runtime.Extensions 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Threading 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

顺便说一下,我已经在整个构建机器中安装了Visual Studio 2015,并且我已经检查了扩展管理器菜单中是否存在NuGet 3.1.

我想TFS Build正在使用不同的NuGet安装位置,但我无法弄清楚它在哪里寻找它以及如何将它从2.8.x更新到3.x.

tfs tfsbuild visual-studio nuget tfs-2015

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

原子性:数据库事务和Windows Azure

背景

有一个消息队列域.此域可能适用于某些消息队列技术.在这种特殊情况下,它绑定到Windows Azure Service Bus.

某些项目具有注册Windows Azure Service Bus主题(基本上是消息队列)的操作.

注册新的消息队列意味着:

  1. 启动域事务(即数据库事务).
  2. 添加带有一些关联信息的消息队列域对象(例如用户注册它或者属于整个消息队列的应用程序).
  3. 使用控制反转来处理消息队列服务器中的实际队列注册(在这种情况下,它将针对Windows Azure Service Bus发生).
  4. 如果没有出错,域事务将被调用,并且关联的域对象将被持久化或更新.

在背景之上,如果域事务成功结束并且Windows Azure Service Bus主题注册正常工作,它应该可以正常工作.

问题

但是,如果域事务成功结束但Windows Azure Service Bus无法注册主题 - 即消息队列 - 会发生什么?

是的,你是一个破碎的域名.

如果在域事务启动之前进行Windows Azure Service Bus主题注册会发生什么?好吧,如果一切顺利,没问题.但现在问题已经被颠倒了:如果Windows Azure Service Bus主题被正确注册但后来域事务失败会发生什么?

是的,第二种情况比第一种情况要好,因为操作已经注册了一个无用的消息队列,但域名不知道它.现在主要的问题是,不确定数量的事务可能会失败,并且未知数量的消息队列将一无所获.

试想一下,如果这是一个严肃而庞大的商业服务:许多无用的消息队列和一个系统管理员(一个人)每月删除无用的消息队列.

那么什么 - 现在的问题 - ?

由于我发现选择使用无用的消息队列比拥有破坏的域更好,我选择以这种方式继续前进,但是... 有Windows Azure任何类型的分布式事务机制以包含任何远程对象在原子事务中创建,包括其他特定于域的操作?,如果没有-可惜我认为,这是实际情况-你将如何解决这个情况?

注意:

我正在寻找这样的东西,因为我真的不喜欢有一个根本无法处理其用例的域名.我宁愿避免这种情况,让域名正常运行并控制一切.

一些有趣的链接......

我发现了一些关于这个主题的有趣链接:

http://blogs.msdn.com/b/clemensv/archive/2012/07/30/transactions-in-windows-azure-with-service-bus-an-email-discussion.aspx

.net distributed-transactions azure c#-5.0

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

codeEntityReference to Sandcastle developerHowToDocument上的方法

我正在尝试使用<codeEntityReference>MAML元素创建指向自定义扩展方法的链接,一旦我构建了文档,我就会得到整个<codeEntityReference>标记内容而不是整个方法的链接.

该方法的一个示例是:

namespace SampleProject 
{
    public static class ExtensionMethods
    {
         public static bool SomeExtension<T>(this T some) => true;
    }
}
Run Code Online (Sandbox Code Playgroud)

<codeEntityReference>将如下<codeEntityReference>M:SampleProject.ExtensionMethods.SomeExtension{T}(TObject)</codeEntityReference>

上面的链接将产生类似M的输出:SampleProject.ExtensionMethods.SomeExtension {T}(T).

实际上,我在文档构建过程中遇到以下错误:

警告:BuildAssembler:警告:ResolveReferenceLinksComponent:[52e40f26-3dfe-47e0-adf1-09233e98f42e]未知的引用链接目标'M:SampleProject.ExtensionMethods.SomeExtension {T}(T)'

我错过了什么吗?那有什么不对?我试图提供方法参考:

M:SampleProject.ExtensionMethods.SomeExtension`1
Run Code Online (Sandbox Code Playgroud)

......但它没有解决问题.

c# documentation sandcastle maml shfb

3
推荐指数
2
解决办法
725
查看次数

数组,Arraylist或列表列表?

我打算使用标准数组,我需要x行数和2列

double[,] members = new double[x, 2];
Run Code Online (Sandbox Code Playgroud)

并循环遍历我得到的所有结果,然后将它们添加到数组中,但由于结果数量可以更改,我不想预先定义数组的大小...

members[0, 0] = cost;
members[x, 1] = tax;
x++;
Run Code Online (Sandbox Code Playgroud)

我正在考虑调整数组大小,但是为此更简单地使用arraylist或列表列表会更容易吗?

.net c# .net-4.0 c#-4.0

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

如何向上转换泛型类型参数

当我在这种情况下使用反射时,创建的类型可以是许多泛型类型。

BaseStepHandler<BaseStepDataModel> activator = (BaseStepHandler<BaseStepDataModel>)Activator.CreateInstance(....);
Run Code Online (Sandbox Code Playgroud)

创建的实例可以是 BaseStepDataModel 的所有子项。

BaseStepHandler<OneDataModel>
OR
BaseStepHandler<TwoDataModel>

OneDataModel 和 TwoDataModel 正在扩展 BaseStepDataModel。

这是我得到的例外:

无法将类型为“....GlobalOnBoardingStepOneHandler”的对象转换为类型“....BaseStepHandler`1[....BaseStepDataModel]”。

这是 GlobalOnBoardingStepOneHandler 的声明。

public class GlobalOnBoardingStepOneHandler : BaseStepHandler<GlobalOnBoardingStepOneDataModel>{}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

尝试从对象数组中获取自定义对象类型数组

我有一个函数返回一个对象数组.问题是,对象可以是三种不同类型之一.我试图将这些对象分解为不同自定义类型的数组.

例如:

var collection = something.ReturnObjArray();
var Details = collection.Where(a => a is DetailItem);
var Addenda = collection.Where(a => a is AddendaItem);
Run Code Online (Sandbox Code Playgroud)

如果我执行上述操作并尝试访问foreach循环中的数据,以将附录放入详细项目中的集合中:

foreach (var addendaItem in Addenda)
{
    var detailItem = Details.Single(d => d.DetailAddendaKey == addendaItem.Key);
    detailItem.Addenda.Add(addendaItem);
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

'object'不包含'DetailAddendaKey'的定义,并且没有扩展方法'DetailAddendaKey'可以找到接受'object'类型的第一个参数(你是否缺少using指令或汇编引用?)

其中包括.如果我尝试将详细信息和附录的var更改为:

IEnumerable<DetailItem> Details = collection.Where(a => a is DetailItem);
IEnumerable<AddendaItem> Addenda = collection.Where(a => a is AddendaItem);
Run Code Online (Sandbox Code Playgroud)

我超越了上面的错误,但现在得到:

无法隐式转换'System.Collections.Generic.IEnumerable<object>''System.Collections.Generic.IEnumerable<MyNameSpace.DetailItem>'.存在显式转换(您是否错过了演员?)

有什么想法我需要做什么?

c# linq arrays

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

如何使用Team Foundation Server对象模型获取可编写脚本的构建定义?

是否可以使用常规对象模型获取Team Foundation Server 2015新的构建定义,或者我是否被迫使用REST API获取它们?

如果可以使用对象模型,我应该使用哪个类来执行此操作?

我能够使用获得XAML构建定义IBuildServer.QueryBuildDefinitions.是否有与此方法等效的方法,以便我可以访问新的构建定义及其变量?

c# tfs build tfsbuild tfs-2015

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

我可以从Visual Studio Code编译和运行.NET MVC 5项目吗?

这是因为我有一个VisualStudio2015项目,并希望快速修改和编译代码.这对我工作的地方非常有用,我们有慢速PC机和VS2015负载龟速.

谢谢你的提示.:d

c# asp.net-mvc visual-studio-2015 visual-studio-code

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

从Collection中删除对象

我有一个对象集合,我希望根据函数调用删除一些对象将返回true或false.请参阅下面的示例代码snipette -

for each(MyClass obj in Objects)
{
  if(!ValidateObject(obj)
  { Objects.Remove(obj); }
}
Run Code Online (Sandbox Code Playgroud)

我不想在这里使用循环.上面的样品需要一个衬垫代码.提前致谢.

.net c# collections loops c#-4.0

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