小编Tim*_*ing的帖子

Azure Web应用程序缓慢的数据库连接

我开发了一个Web应用程序标准Web应用程序,允许用户显示和更新SQL数据库中的一组数据.

Web应用程序使用AngularJS客户端,它通过MVC Web API调用与Web服务器交互,以检索和更新数据库上的数据.服务器端代码使用.NET 4.5以C#编写,并使用Entity Framework v6.0访问数据库.

Web应用程序托管在Azure Web App中.数据库是Azure SQL数据库.

问题是,当应用程序未使用大约10-15分钟时,再次使用它,第一次数据检索通常需要10秒以上才能返回浏览器.之后,性能良好,直到下次应用程序未使用.

我在应用程序中添加了跟踪,我们看到延迟是连接打开的时间.数据库上的实际查询运行亚秒级.

我注意到,虽然使用不同的主机配置我得到了不同的结果.特别是在内部托管并指向Azure数据库不会遇到任何接近相同延迟的地方.

我已经改变了其中一个例程来使用ADO.NET而不是实体框架,并更改了跟踪以尝试进一步缩小范围.

我看到的是:

ConnectionStringSettings ADOcnxstring = ConfigurationManager.ConnectionStrings["DevFEConnectAdo"];
DbConnection ADOconnection = new SqlConnection(ADOcnxstring.ConnectionString);
Run Code Online (Sandbox Code Playgroud)

延迟就在这里(在SQL被定义之前!

然后我构建命令并执行DataReader等:

    DbCommand ADOcommand = ADOconnection.CreateCommand();
             :
etc
Run Code Online (Sandbox Code Playgroud)

因此,延迟是打开与数据库的连接.

我的连接字符串是标准的:

<add name="DevFEConnectAdo" connectionString="data   
source=feeunsqldevfeconnect.database.windows.net;initial 
catalog=feeunsqldbdevfeconnect;persist security info=True;user id=???
@???;password=???;multipleactiveresultsets=True"></add>
Run Code Online (Sandbox Code Playgroud)

c# sql-server azure

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

使用VSTS版本定义运行实体框架代码数据库迁移

我正在使用代码优先迁移编写.NET核心和实体框架核心应用程序.

我希望能够使用Visual Studio Team Services构建和发布定义将其部署到Azure Web App

我希望能够使用脚本将数据库迁移作为发行定义的一部分运行

dotnet ef database update
Run Code Online (Sandbox Code Playgroud)

我通过发布定义中的命令提示符操作完成了此操作

但是我总是收到消息

No executable found matching command "dotnet-ef"
Run Code Online (Sandbox Code Playgroud)

我已经尝试确保此命令与.cproj文件在同一目录中运行

我也试过跑一个

dotnet restore 
Run Code Online (Sandbox Code Playgroud)

作为以前的命令提示符任务,这会产生错误

The folder 'C:\a\r1\a\Drop\s\src\xxxxx' does not contain a project to restore even though it does.
Run Code Online (Sandbox Code Playgroud)

是否有人尝试过代码优先迁移作为团队服务发布定义步骤的一部分?

我的另一个选择是将迁移作为Web应用程序本身的一部分运行,但我希望通过Release进程运行它,而不是在Application中运行它.

azure ef-migrations azure-pipelines-release-pipeline

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

如何模拟外部类中未声明为虚拟的方法

我正在尝试为 C# 项目创建单元测试,其中我有一个无法修改的外部类。它不是从接口实现的,方法也不是虚拟的。

我想模拟从此类的方法返回的结果以及该方法将设置的任何类属性。

所以我在外部课上

 public class RatioThreadProcessor {
    public SqlString dbName;        
    public List<Instrument> units;
    public Results Results;
    etc
    public void Process() {

        // Does stuff 
        // I want this to be called for real but not in my test case
    }
Run Code Online (Sandbox Code Playgroud)

我正在测试的代码是这样的:

public class FundInfoRatioService
{
    public RatioThreadProcessor ratioThreadProcessor;

    public FundInfoRatioService()
    {
        ratioThreadProcessor = new RatioThreadProcessor();
    }

    public MethodUnderTest() 
    {
       ratioThreadProcesor.dbName = "as";
       ratioThreadProcessor.Process();
       var results = ratioThreadProcessor.Results;
       // important logic I want to test
    }
Run Code Online (Sandbox Code Playgroud)

为了测试它,我想做类似的事情:

  public class …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq

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