У меня есть база данных, и у меня есть POCO объекта, и все, для чего я хочу использовать EF, - это сопоставление между ними и отслеживание изменений для загрузки, сохранения и т. Д.
Я читал много литературы (такой, как она есть) по «Первому коду», и мне неясно, сколько информации о базе данных мне нужно предоставить, когда база данных не будет сгенерирована.
Например, нужно ли EF знать, какие свойства являются ключами, максимальная длина строковых свойств, отношения между таблицами и т. Д.? Или, если ему нужно знать, может ли он получить эту информацию из самой базы данных? Другими словами, должен ли я предоставлять аннотации [Key] и тому подобное, или предоставлять информацию о конфигурации, детализирующую отношения внешнего ключа, если не требуется создавать базу данных?
ОБНОВЛЕНИЕ: Чтобы прояснить ситуацию, я говорю о следующем коде. Я должен вручную создать этот класс, производный от DbContext. Я мог бы предоставить много информации БД о свойствах в OnModelCreating или в атрибутах, связанных со свойствами в классах сущностей.
public class SchedulerContext : DbContext
{
public SchedulerContext(EntityConnection connection)
: base(connection)
{
}
public DbSet<Client> Clients { get; set; }
public DbSet<ConsultantDistrict> ConsultantDistricts { get; set; }
public DbSet<ConsultantInterviewSetting> ConsultantInterviewSettings { get; set; }
public DbSet<ConsultantUnavailable> ConsultantsUnavailable { get; set; }
public DbSet<CustomEmailTemplate> CustomEmailTemplates { get; set; }
public DbSet<DateEvent> DateEvents { get; set; }
public DbSet<Event> Events { get; set; }
public DbSet<EventItem> EventItems { get; set; }
public DbSet<EventItemUserViewed> EventItemsUserViewed { get; set; }
public DbSet<FlaggedDate> FlaggedDates { get; set; }
public DbSet<Interview> Interviews { get; set; }
public DbSet<Interviewee> Interviewees { get; set; }
public DbSet<IntervieweeNote> IntervieweeNotes { get; set; }
public DbSet<InterviewEvent> InterviewEvents { get; set; }
public DbSet<NotificationSent> NotificationsSent { get; set; }
public DbSet<SchedulerRole> SchedulerRoles { get; set; }
public DbSet<SiteEvent> SiteEvents { get; set; }
public DbSet<UnavailableHour> UnavailableHours { get; set; }
public DbSet<UserLogin> UserLogins { get; set; }
public DbSet<UserSites> UserSites { get; set; }
public DbSet<Visit> Visits { get; set; }
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ConsultantUnavailable>().MapSingleType().ToTable("ConsultantsUnavailable");
modelBuilder.Entity<EventItemUserViewed>().MapSingleType().ToTable("EventItemsUserViewed");
}
}