Aktualisiert
Wenn Sie Repository-Muster verwenden, können Sie nicht mehrere DbContext machen gehen, erstellen Sie eine generisch, und übergeben Sie es zu Ihrem Allgemein Repository wie unten:
public class Repository<T> : IRepository<T>
where T : EntityBase
{
internal MyDbContext context;
internal DbSet<T> dbSet;
public Repository()
{
context = new MyDbContext();
this.dbSet = context.Set<T>();
}
public void Add(T entity)
{
dbSet.Add(entity);
}
public void Delete(T entity)
{
dbSet.Remove(entity);
}
public void Delete(int id)
{
dbSet.Remove(dbSet.Find(id));
}
public T GetById(int id)
{
return dbSet.Find(id);
}
public IEnumerable<T> GetAll()
{
return dbSet.AsEnumerable();
}
public void Update(T entity)
{
dbSet.Attach(entity);
context.Entry(entity).State = EntityState.Modified;
}
public void Save()
{
context.SaveChanges();
}
}
und Sie sollten schließe deine DbSets auch dort ein.
Wenn Sie EF-Code-First tut sein Ihr dann POCO
Klasse zu entwerfen, basierend auf wie viele benötigt werden, aber nicht mehr. Aber basierend auf dem, was Sie über 800
Tabellen sagen, ich denke, Sie möchten versuchen, Database-First
Ansatz eher. Ich schlage Ihnen diese article sehr vorsichtig vor, da es alles erklärt, was Sie brauchen.
Update:
Wenn Sie dies aus DataBase-First-Ansatz: Ado.NET Entity Model
Schafft Ihr DbContext für Sie! Wenn Sie sich die .EDMX-Datei genauer ansehen, sind es im Grunde genommen Ihre POCO-Klassen.
Nun, wenn Sie Code-First-Ansatz versuchen, sagen können Sie diese DbContext Klasse haben:
public class MyDbContext : DbContext
{
public MyDbContext()
: base("name=MyConnection")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, YourApplication.Migrations.Configuration>("MyConnection"));
}
//Every time you need to add new Table you add them here.
public DbSet<Users> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//And Map them here
modelBuilder.Configurations.Add(new UsersMap());
}
}
Sie fügen einfach ein neues DbSet<Class>
auf Ihre DbContext
wie unten:
public DbSet<POCO CLASS> CLASS { get; set; }
Und so weiter Normalerweise erstelle ich eine DbContext
für jede Area
, die ich in meiner MVC-Anwendung habe. So können Sie gehen wie Admin Area
->AdminDbContext
Und so weiter.
Gerade DB ersten Ansatz verwenden und die Entitäten importieren, die erforderlich sind. – Ric
Sie wollen nicht ein Modell mit mehr als 800 Tabellenobjekte. Sie können mehrere dbcontext-Modelle verwenden. Sie können ein Modell für den Umgang mit Mitarbeitern und ein anderes für den Umgang mit Kursen oder anderen Bereichen Ihres Projekts erstellen. – JamieD77
Aktualisiert meine Antwort – Valkyrie