【发布时间】:2020-08-02 01:37:46
【问题描述】:
我正在使用最新的 .NET Core 技术栈包括:Microsoft Visual Studio Community 2019 Preview 版本 16.7.0 预览版 6.0 ; .NET Core 5.0.100-preview.7.20366.6; Microsoft.EntityFrameworkCore.SqlServer 版本 5.0.0-preview.7.20365.15 ;用于我的 Blazor 服务器端 Web 应用的 Microsoft SQLServer 2019。
在Startup.cs我有
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddSingleton<SysAutoIdController>();
在文件SystemInformation.razor
@page "/system_information"
@using myproj.Forms
@using myproj.DTO
@using myproj.Models
@inject myproj.Data.ApplicationDbContext dbContext;
@inject myproj.Controllers.SysAutoIdController sysAutoIdController;
<h3>System information</h3>
database size = @foo
@code {
string fooTemp = sysAutoIdController.getDbSize(dbContext);
string foo = foo2.ToString();
}
控制器,文件SysAutoIdController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using myproj.Data;
using myproj.Models;
using Microsoft.EntityFrameworkCore;
namespace myproj.Controllers
{
public class SysAutoIdController : Controller
{
ApplicationDbContext db = new ApplicationDbContext();
public string getDbSize(ApplicationDbContext db2)
{
var foo = db2.SysautoId.FromSqlRaw("" +
" SELECT a.dbdisk " +
" FROM " +
"(SELECT sys.databases.name AS dbname, " +
" CONVERT(VARCHAR, SUM(SIZE) * 8 / 1024) + \' MB\' AS dbdisk " +
" FROM sys.databases " +
" JOIN sys.master_files ON sys.databases.database_id = sys.master_files.database_id " +
" GROUP BY sys.databases.name) a " +
" WHERE a.dbname = \'mydatabase\' ");
return foo.ToString();
}
}
}
错误
CS0236:字段初始化程序无法引用非静态字段, 方法或属性“SystemInformation.sysAutoIdController”
CS0236:字段初始值设定项无法引用非静态字段, 方法或属性“SystemInformation.dbContext”
如何在剃刀页面成功时运行sysAutoIdController.getDbSize(dbContext); 之类的内容?
【问题讨论】:
标签: c# asp.net-core entity-framework-core blazor blazor-server-side