Ich versuche, meine Datenbank in meinem neuen Projekt mit einer Datenbank einzurichten, jedoch halte ich dieses Problem bekommen:Rahmen Verbindung in n-tier C# Schicht
An unhandled exception of type 'System.StackOverflowException' occurred in System.Core.dll
Ich habe ein leeres 4,5-Projekt Web-api Ordner mit . Dann habe ich 3 Klassenbibliothek, BO (Business Ojcect), BLL (Geschäftslogik) und DAL (Datenzugriffsschicht) hinzugefügt.
Zuerst die Haupt-App hat web.config mit einer Verbindungszeichenfolge wie diese
<connectionStrings>
<add name="ConnString" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Quantico;Integrated Security=True" providerName=".NET Framework Data Provider for SQL Server"/>
</connectionStrings>
In meinem BO Bibliothek I 2 Klasse Basis haben und Geschlecht
Basis
public abstract class Base
{
public int ID { get; set; }
public Boolean isValid { get; set; }
public DateTime createdOn { get; set; }
public int createdID { get; set; }
/*public Person createdPerson { get; set; }*/
public DateTime updatedOn { get; set; }
public int updatedID { get; set; }
/*public Person updatedPerson { get; set; }*/
}
Geschlecht
public class Gender : Base
{
public string Description { get; set; }
}
In meinem dal Ich habe 2 Klasse GenderDAL und Appcontext
AppContext is like this
public class AppContext : DbContext
{
public AppContext() : base("ConnString")
{
}
public DbSet<Gender> Gender { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Gender>().ToTable("Gender");
modelBuilder.Entity<Gender>().HasKey(x => x.ID);
modelBuilder.Entity<Gender>().Property(x => x.Description).HasMaxLength(255);
modelBuilder.Entity<Gender>().Property(x => x.Description).IsRequired();
modelBuilder.Entity<Gender>().Property(x => x.createdID).IsRequired();
modelBuilder.Entity<Gender>().Property(x => x.createdOn).IsRequired();
}
}
GenderDAL als
public class GenderDAL : AppContext
{
private AppContext db = null;
public GenderDAL()
{
db = new GenderDAL();
}
public IEnumerable<Gender> GetGenders()
{
return db.Gender.ToList<Gender>();
}
}
Das Problem tritt an der Basis (CONNSTRING) und mein Controller ist wie folgt
public class GenderController : ApiController
{
private GenderBLL db = null;
[HttpGet]
public IEnumerable<Gender> Genders()
{
db = new GenderBLL();
return db.GetGenders();
}
}
folgen und meine Geschäftslogik ist in diesem Stadium nicht viel, aber es ist so
public class GenderBLL
{
private GenderDAL db = null;
#region constructor
public GenderBLL()
{
db = new GenderDAL();
}
#endregion
public IEnumerable<Gender> GetGenders()
{
return db.GetGenders();
}
}
Wenn ich meinen Server Explorer anschaue, kann ich unter Datenverbindung sehen, dass ich mit der Datenbank verbunden bin, aber keine Tabelle existiert. Ich glaube, dass meine Probleme sind, und ich bin nicht sicher, wie es entweder zu füllen, oder welcher Schritt habe ich verpaßt
Gaaaaaaaaa. Das habe ich nicht gesehen! Ich stimme zu, entfernen Sie die Erbschaft. – granadaCoder
Diese verursachen mir eine neue Probleme, so was ich tat, entfernt wird,: Appcontext und jetzt bekomme ich dieses eine Ausnahme vom Typ ‚System.ArgumentException‘ auftrat in EntityFramework.dll wurde aber in Benutzercode Zusätzliche Informationen nicht behandelt : Der ADO.NET-Provider mit dem invarianten Namen '.NET Framework-Datenprovider für SQL Server' ist entweder nicht in der Computer- oder Anwendungskonfigurationsdatei registriert oder konnte nicht geladen werden. Weitere Informationen finden Sie in der inneren Ausnahme. – Jseb
Überprüfen Sie diesen Link, wenn Sie lokale db-Version 13 verwenden http://www.michael-whelan.net/sql-server-localdb-2014-connection-string/ –