无效操作异常: 找不到连接字符串"DefaultConnection"



我是Razor的新手。

创建于appsettings.json 中的以下条目

"DefaultConnection": "Server=(LocalDb)\MSSQLLocalDB;Database=TestDB;Trusted_Connection=True;MultipleActiveResultSets=True"

尝试在命令下运行

@{
var _db = Database.Open("DefaultConnection");
var selectQueryString = "SELECT * from Book";
}

给出以下错误。InvalidOperationException:未找到连接字符串"DefaultConnection"。var _db=数据库打开("DefaultConnection"(;

以下内容已包含在index.cshtml脚本中。

@using WebMatrix.Data;
@using System.Data.SqlClient

数据库中不存在图书表。

如果我遗漏了什么,请提出建议。

这是完整的代码

@page
@using WebMatrix.Data;
@using System.Data.SqlClient

@model BookListRazor.Pages.Databases.IndexModel
@{
ViewData["Title"] = "Index";
}
<h1>Index</h1>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Web Pages Demo</title>
</head>
<body>
<h1>Hello Web Pages</h1>
<p>The time is @DateTime.Now</p>
</body>

@{
var db1 = Database.Open("DefaultConnection");
var selectQueryString = "SELECT name,Database_id,Compatibility_level,collation_name FROM sys.databases ORDER BY Name";
}

<body>
<h1>Databases</h1>
<table>
<tr>
<th>name</th>
<th>Database_id</th>
<th>Compatibility_level</th>
<th>collation_name</th>
</tr>
@foreach (var row in db1.Query(selectQueryString))
{
<tr>
<td>@row.name</td>
<td>@row.Database_id</td>
<td>@row.Compatibility_level</td>
<td>@row.collation_name</td>
</tr>
}
</table>
</body>

</html>

Database.Open需要正确的连接字符串,而不是试图从appsettings.json解析它。尝试使用以下代码通过IConfiguration解决此问题。

@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@{
var db1 = Database.Open(Configuration["DefaultConnection"]);
var selectQueryString = "SELECT name,Database_id,Compatibility_level,collation_name FROM sys.databases ORDER BY Name";
}

最新更新