2017-01-27 4 views
0

Ich lerne asp.net Core 1.0.1 und ich habe erfolgreich mit einer SQLite-Datenbank verbunden. Die Verbindungszeichenfolge wird in appsettings.json gespeichert. Ich habe die gleiche Datenbank, eine im Ordner bin und eine in der netcoreapp1.0.asp.net Core-Datenbank-Standort und Messaging

Ich kann einen neuen Datensatz erstellen und es wird gespeichert. Ich überprüfte beide Datenbanken mit dem SQLite-Manager in Firefox, um zu sehen, welcher verwendet wird, aber es gibt keine gespeicherten Daten auf beiden.

  1. Wo ist die Datenbank, an der ich gerade arbeite, gespeichert?
  2. Ich habe versucht, eine Art von MessageBox zu verwenden, um den Verbindungszeichenfolgenpfad anzuzeigen, aber es gibt kein Meldungsfeld im asp.net-Kern. Wie kann ich Nachrichten im asp.net Kern zeigen?

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

Sie müssen den entsprechenden Code schreiben. –

+0

Leicht verbesserte Formatierung –

+0

Hallo Yaz. Wenn Sie sagen "Ich kann einen neuen Datensatz erstellen und es wird gespeichert." Wie hast du bewiesen, dass der Rekord gerettet wurde? Hast du die App gestoppt, neu gestartet und dann den Datensatz abgerufen? –

Antwort

0

Wenn Sie nur schnell Antworttext für die Ausgabe zu benötigen Sie eine Methode auf dem Controller wie folgt hinzufügen kann ...

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); 
} 

Anschließend können Sie diese Controller-Methode aufrufen aus Ihrer Ansicht nach so ...

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

Dies wird Ausgangswerte wie folgt ..

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

Vielen Dank für Ihre Antwort. Ich habe deinen Code wie gehabt ausprobiert und es funktioniert. Aber ich muss die Verbindungszeichenfolge anzeigen, also tat ich dies: string connection = Configuration.GetConnectionString ("MyDatabase"); byte [] data = Codierung.UTF8.GetBytes (Verbindung); Response.ContentType = "application/json"; warten Response.Body.WriteAsync (Daten, 0, data.Length); aber ich bekomme ArgumentNullException: String-Referenz nicht auf eine Instanz eines String festgelegt. Parametername: s – Yaz

0

Nun, am Ende wird die Datenbank tatsächlich in bin \ Debug \ netcoreapp1.0 gespeichert. (Ich habe im falschen Ordner gesucht).

Aber ich weiß immer noch nicht, wie man eine einfache Nachricht im asp.net Kern zeigt!

Ich lerne asp.net core + viele andere Dinge nur um eine asp.net-Datenbank-basierte Website zu erstellen, aber es ist nicht einfach. Einfache Dinge sind schwer zu implementieren.

Mit wpf, C# + mvvm ist großartig, ich wünschte, ich könnte sie stattdessen für die Web-Entwicklung verwenden. Aber hey wir leben und lernen. :-)

Danke.

1

So können Sie Ihre Verbindungszeichenfolge aus Ihrer appsettings.json in Ihre Ansicht ausgeben.

Zuerst das ist, wie meine Verbindungszeichenfolge in der appsettings.json definiert ist

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

}

Erstellen Sie eine Klasse der Verbindungszeichenfolge

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

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

Aktualisieren, um die startup.cs zu speichern Datei

Sicherstellen, dass der Konstruktor die Appsettings liest.JSON-Datei

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(); 
    } 

diese Zeilen ConfigureServices hinzufügen

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

Aktualisieren Sie die Controller

public class HomeController : Controller 
{ 
    private AppSettings _AppSettings; 

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

Fügen Sie die Controller-Methode

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); 
    } 

Rufen Sie die Controller-Methode aus Ihrer Sicht

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

Ausgang der Verbindungszeichenfolge

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

Danke pforsthoff, ich arbeite an Ihrem Code. Ich werde zurückschreiben, wenn ich fertig bin. :-) – Yaz

+1

Ihr Code funktioniert perfekt für die Aufgabe. Ich habe von dir ganz neue Dinge gelernt. Ich bin sehr dankbar für Ihre Hilfe. Alles Gute. – Yaz

+0

Yaz, kannst du bitte diese Antwort als nützlich markieren? Eigentlich beide, wenn sie hilfreich wären. Danke! – pforsthoff