我开发了一个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) 我正在使用代码优先迁移编写.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中运行它.
我正在尝试为 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)