Ответ 1
Интуитивно, DbContext соответствует вашей базе данных (или коллекции таблиц и представлений в вашей базе данных), тогда как DbSet соответствует таблице или представлению в вашей базе данных. Поэтому имеет смысл, что вы получите комбинацию обоих!
Вы будете использовать объект DbContext для доступа к вашим таблицам и представлениям (который будет представлен DbSet), и вы будете использовать свой DbSet для доступа, создания, обновления, удаления и изменения данных таблицы.
Если у вас есть 10 таблиц в вашей базе данных, и ваше приложение работает с 5 из них (назовем их Table1 - Table 5), имеет смысл получить к нему доступ, используя объект MyAppContext, где класс MyAppContext определяется следующим образом:
public class MyAppContext : DbContext
{
public MyAppContext () : ;
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public DbSet<Table3> Table3 { get; set; }
public DbSet<Table4> Table4 { get; set; }
public DbSet<Table5> Table5 { get; set; }
}
Обратите внимание, что, например, идентификатор Table1 используется как имя типа, так и имя свойства в определенном типе контекста. То, что вы видите выше, довольно типично. Ниже приведен пример класса, который соответствует схеме таблицы:
public class Table1
{
public int Id {get; set;}
public string AStringField {get; set;}
//etc.
}
За дополнительной информацией обращайтесь к http://entityframeworktutorial.net/