小编Jos*_*eph的帖子

如果禁用MSDTC,如何绕过TransactionScope内的多个数据库连接?

我有一个Web应用程序,它向DAL中的3个数据库发出请求.我正在编写一些集成测试,以确保整个功能往返实际上完成了我期望它做的事情.这与我的单元测试完全分开,只是fyi.

我打算写这些测试的方式是这样的

[Test]
public void WorkflowExampleTest()
{
    (using var transaction = new TransactionScope())
    {
        Presenter.ProcessWorkflow();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Presenter已经建立.问题在ProcessWorkflow方法中发挥作用,因为它调用各种存储库,而这些存储库又访问不同的数据库,而我的sql server框没有启用MSDTC,所以每当我尝试创建新的sql连接时,我都会收到错误,或者尝试更改缓存连接的数据库以定位另一个数据库.

为简洁起见,Presenter类似于:

public void ProcessWorkflow()
{
    LogRepository.LogSomethingInLogDatabase();
    var l_results = ProcessRepository.DoSomeWorkOnProcessDatabase();
    ResultsRepository.IssueResultstoResultsDatabase(l_results);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多东西来解决这个问题.

  1. 始终缓存一个活动连接并更改目标数据库
  2. 为每个目标数据库缓存一个活动连接(这有点无用,因为池应该为我做这个,但我想看看我是否得到不同的结果)
  3. 在每个存储库中添加其他TransactionScope,以便使用TransactionScopeOption"RequiresNew"拥有自己的事务

我在列表上的第三次尝试看起来像这样:

public void LogSomethingInLogDatabase()
{
    using (var transaction = 
        new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        //do some database work

        transaction.Complete();
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上我尝试的第三件事实际上是让单元测试工作,但所有完成的事务实际上都是我的数据库!所以这是一个彻头彻尾的失败,因为整个观点是不影响我的数据库.

因此,我的问题是,鉴于我已经制定的限制,还有哪些其他选择可以实现我想要做的事情?

编辑:

这就是"//做一些数据库工作"的样子

using (var l_context = new DataContext(TargetDatabaseEnum.SomeDatabase))
{
    //use a SqlCommand here
    //use a SqlDataAdapter inside the SqlCommand
    //etc.
}
Run Code Online (Sandbox Code Playgroud)

并且DataContext本身看起来像这样

public class …
Run Code Online (Sandbox Code Playgroud)

c# sql-server transactions asp.net-2.0

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

保存LINQ查询以供以后使用的最简单方法是什么?

我有一个功能请求,以便以后保存用户的搜索.

现在我正在根据用户指定的内容动态构建LINQ语句.

所以我开始想知道,有一种简单的方法可以让我简单地接受用户构建的查询,并将其保存在某个地方,最好是我的数据库,以便我以后可以检索它吗?

有没有办法将查询持久化为XML或JSON,然后再重新构建查询?

linq

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

你如何使用Ninject的方法注入?

我有一个类需要在它的类中使用IRepository作为一个方法.

理想情况下,我想避免将此依赖关系解析为类的构造函数,因此我在Ninject中找到了方法级注入,并想知道这是如何工作的?

我理解如何设置它.我很困惑的是如何称呼它?

例:

class SomeClassThatUsesRepository
{
    [Inject]
    public void QueryForSomeStuff(IRepository repository)
    {
        //do some stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在不指定IRepository的情况下调用此方法?

var someClass = Kernel.Resolve<SomeClassThatUsesRepository>();
Run Code Online (Sandbox Code Playgroud)

如果我使用构造函数会工作,但我想调用一个方法.

如何使用Ninject方法注入调用方法?

ninject

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

在Razor View上处理嵌入式资源的正确方法是什么?

我正在将一些代码从ASPX视图引擎迁移到Razor,我遇到了障碍.

我有这个代码:

<link rel="Stylesheet" type="text/css" href="
    <%=Page.ClientScript.GetWebResourceUrl
        (typeof(DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector), 
        "DotNetOpenAuth.OpenId.RelyingParty.OpenIdSelector.css")%>" />
Run Code Online (Sandbox Code Playgroud)

这里的问题是,使用Razor,我没有Page属性.

所以我退后一步,我正在看这个想知道:在Razor中获取嵌入式资源的正确方法是什么?

我花了很多时间试图找到关于这个主题的解决方案,但除了"在帮手中包装一个新的页面"之外,我还没有找到任何其他的东西.

这是唯一的方法吗?还是有更正确的东西?

embedded-resource razor asp.net-mvc-3

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

javascript似乎使用Firefox向后使用时区

我在Firefox(版本21)的控制台中运行以下内容,我得到了我不期望的结果.

new Date(1362891600000);

var date = new Date(1362891600000);
var time = date.getHours();
new Date(date.setHours(date.getHours() + 24));
Run Code Online (Sandbox Code Playgroud)

结果真的让我失去了一个循环.

第一个日期显示为东部夏令时,而第二个日期显示为东部标准时间.这完全倒退了.IE或Chrome不会发生这种情况.

这里发生了什么? 在此输入图像描述

javascript datetime dst

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

有没有办法确保(仅)在HTTPS协议上运行ASP.NET应用程序?

我想知道是否有办法确保只能使用HTTPS协议运行ASP.NET应用程序

我可以使用任何代码(可能是防御性编程措施?),这可以解决问题,或者可能是一些可以完成工作的IIS/Web服务器设置.

asp.net iis https http

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

如何在Expression Blend中裁剪图像?

我知道这更倾向于设计师问题的方向,但是当我面临开发需要我剪裁图像的东西时,我想我会提出一个问题.

这看起来像一个荒谬的问题,但我看看IDE(Expression Blend 2)试图找到一种方法来裁剪我的图像,但我无法弄明白.

这似乎与Joel的问题非常一致,并且在Podcast 58中进行了讨论,因为在Expression Blend中进行设计时,我是一个完整的菜鸟.我非常有兴趣找出最有效的方法来做到这一点.我找到了一篇描述你可以通过的工作流程的文章,它将产生一个作物,我在下面作为答案添加了,但我真的希望其他人知道更快(更少点击)的方式做一些琐碎的事情就这样.

有谁知道如何做到这一点?

image expression-blend

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

我可以使用哪些常见的SQL注入检查?

我正在运行我的网络应用程序,我正在尝试测试系统的各个部分,以确保它们不能成功进行SQL注入.

我可以在textboxes/textareas等上执行哪些常见的SQL注入检查,这些检查可以很好地检查漏洞?

我并不担心破坏我的数据,因为我在测试台上运行它,所以如果它杀死了我的服务器或数据库就可以了.

我特意寻找可以使用的例子.我并不是真的在寻找整体技术,虽然我希望用我希望得到的例子来涵盖各种不同的技术.

sql-injection sql-server-2005

4
推荐指数
2
解决办法
1980
查看次数

如何使用 jquery 将 json 结果写入 div?

这可能是一个非常简单的问题,但我找不到任何有效的方法。

我正在尝试获取 json 结果并将其写入 div 的内部 html 以查看它的外观。

我有这样的事情:

$.getJSON("someurlthatgivesmejson",
    function(data){         
        $("#jsonmodel").html(data);  // what should this be??
    });
  });
Run Code Online (Sandbox Code Playgroud)

更新

我能够通过使用它来显示一些文本

$("#jsonmodel").html($.param(data));
Run Code Online (Sandbox Code Playgroud)

但是,它的格式不像浏览器显示 json 结果的方式,例如 javascript 对象的结构。

jquery json

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

有没有办法在jQuery中更改事件参数?

我希望能够更改传递给selectable的start事件的参数,因此我基本上可以允许我的用户使用可选择的jQuery UI效果而无需按住CTRL键.

JS

$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
    var result = $( "#select-result" ).empty();
    event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});
Run Code Online (Sandbox Code Playgroud)

我有一个小提琴,我想在这里完成的事情:

http://jsfiddle.net/josephbulger/ZfevM/

我遇到的问题是,当我在start方法中设置事件的参数时,stop方法没有看到我正在进行的更改.

有没有办法完成我想要做的事情?

jquery events jquery-ui jquery-ui-selectable

4
推荐指数
2
解决办法
3482
查看次数