asp.net核心数据库位置和消息传递

时间:2017-01-27 14:56:01

标签: c# asp.net asp.net-mvc sqlite asp.net-core

我正在学习asp.net核心1.0.1并且我已成功连接到SQLite数据库。连接字符串保存在appsettings.json中。我把相同的数据库,一个放在bin文件夹中,一个放在netcoreapp1.0中。

我可以创建一条新记录并保存。我在Firefox中使用SQLite管理器检查了两个数据库,看看哪个正在使用,但两者都没有保存数据。

  1. 那么我正在处理的数据库保存在哪里?
  2. 我尝试使用某种messageBox来显示连接字符串路径,但asp.net核心中没有消息框。如何在asp.net核心中显示消息?

     // appsettings.json
     "ConnectionStrings": {
         "MyDatabase": "Data Source=MyDb.sqlite"
     }
    

3 个答案:

答案 0 :(得分:1)

以下是如何将appsettings.json中的连接字符串输出到视图中。

首先,这是我在appsettings.json

中定义连接字符串的方式
"database": {
"connection": "Data Source=.;Initial Catalog=OdeToFood;Integrated  Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"

}

创建一个类来存储连接字符串

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace CoreTest
{
    public class AppSettings
    {
        public string connection { get; set; }
    }
}

更新startup.cs文件

确保构造函数正在读取appsettings.json文件

public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

将这些行添加到ConfigureServices

 services.AddOptions();
 services.Configure<AppSettings>(Configuration.GetSection("database"));

更新控制器

 public class HomeController : Controller
{
    private AppSettings _AppSettings;

    public HomeController(IOptions<AppSettings> settings)
    {
        _AppSettings = settings.Value;
    }

添加控制器方法

 public async Task ContentAction()
    {
        var constr = _AppSettings.connection;
        var jsonString = "{\"connectionString\""+ constr + "}";
        byte[] data = Encoding.UTF8.GetBytes(jsonString);
        Response.ContentType = "application/json";
        await Response.Body.WriteAsync(data, 0, data.Length);
    }

从您的视图中调用控制器方法

 <div>
    <a asp-controller="Home" asp-action="ContentAction" class="btn btn-  success confirmCreate">
        Generate Response
        <i class="fa fa-angle-left"></i>
    </a>
</div>

输出连接字符串

{"connectionString"Data Source=.;Initial Catalog=OdeToFood;Integrated     Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False}

答案 1 :(得分:0)

如果您只需要快速输出响应正文,可以在控制器上添加一个方法,就像这样......

public async Task ContentAction()
{
    var jsonString = "{\"test\":1,\"output\":false}";
    byte[] data = Encoding.UTF8.GetBytes(jsonString);
    Response.ContentType = "application/json";
    await Response.Body.WriteAsync(data, 0, data.Length);
}

然后你可以从你的视图中调用这个控制器方法......

<div>
    <a asp-controller="Home" asp-action="ContentAction" class="btn btn-success confirmCreate">
        Generate Response
        <i class="fa fa-angle-left"></i>
    </a>
</div>

这将输出像这样的值..

{"test":1,"value":false}

答案 2 :(得分:0)

最后,数据库实际上保存在bin \ Debug \ netcoreapp1.0中。(我看错了文件夹)。

但我仍然不知道如何在asp.net核心中显示一条简单的消息!

我正在学习asp.net核心+加载其他东西只是为了创建一个asp.net数据库驱动的网站,但这并不容易。简单的事情很难实现。

使用wpf,c#+ mvvm很棒,我希望我可以用它们代替web开发。但是,嘿,我们生活和学习。 : - )

感谢。