Asp.Net MVC - Zugriff auf Postgresql mit Entity Framework + Npgsql.Entityframework
Ich bin momentan dabei, ein ASP.NET MVC-Anwendung, die verwendet eine PostgreSql-Datenbank. Model-Klassen sind in einer anderen Klasse Bibliothek. Für den Zugang zur Datenbank bin ich mit Entity Framework + Npgsql.Entityframework von Nuget in die Bibliothek-Klasse. Auch Hinzugefügt habe ich gleich links zu den wichtigsten Projekt. Konfigurationseinstellungen in web.in der config von main Projekt:
<configSections>
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
<providers>
<provider invariantName="Npgsql"
type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
</providers>
</entityFramework>
<connectionStrings>
<add name="NpgsqlContext"
providerName="Npgsql"
connectionString="Server=127.0.0.1;User Id=BaseId;Password=BasePass;Port=5432;Database=Base;" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
support="FF"
description=".Net Framework Data Provider for Postgresql"
type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
Ich erstellte Datenbank mit ein paar Tabellen in pgAdmin. Zugang zu base und Tabellen verwende ich Klassen (Beispiel):
public class NpgsqlContext : DbContext
{
öffentliche NpgsqlContext(): base(nameOrConnectionString: "NpgsqlContext")
{
}
public DbSet<BaseArticle> BaseArticles { get; set; }
}
[Table("ARTICLE", Schema = "public")]
public class BaseArticle
{
[Key]
[Column("ID")]
public int Id { get; set; }
[Column("DATETIME")]
public DateTime DateTime { get; set; }
[Column("TITLE")]
public string Title { get; set; }
[Column("BODY")]
public string Body { get; set; }
}
NpgsqlContext-Objekt erstellt wird und normalerweise hat Recht connectionn string (PORT=5432;KRBSRVNAME=name;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.7.0;HOST=127.0.0.1;USER ID=BasePass;PASSWORD=BasePass;DATABASE=Base
), aber nicht alle Datensätze in der datatable in der Basis - DbSet BaseArticle count gleich 0 ist. Mittlerweile Datensätze da sind. Wo kann ich einen Fehler?
Sowie - in den ASP.NET MVC in der Regel unmöglich zu erreichen, eine lose Kopplung zwischen den teilen der Anwendung? Zum Beispiel - ich habe ASP.NET MVC-Anwendung und durchgeführt-Klassen Zugriff auf eine Datenbank in separaten Bibliotheken. Aber ich musste angeben, links auf die Pakete von Nuget in das Haupt-Projekt. Wie könnte ich das vermeiden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Lösung von meinem problem, das ich brauchte, um offene Verbindung zu base im Konstruktor von Kontext: