我是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";
}