У меня есть база данных, и у меня есть сущность POCO, и все, что я хочу использовать EF, это сопоставление между ними и отслеживание изменений для загрузки, сохранения и т. Д.EF CTP4: Только для кода, не требуется генерация базы данных, какая информация необходима для БД?
Я читал много литература (например, она есть) на «Code First», и я не понимаю, какую часть информации базы данных мне нужно предоставить, когда не будет создана база данных.
Например, EF должен знать, какие свойства являются ключами, максимальная длина строковых свойств, отношения между таблицами и т. Д.? Или, если это нужно знать, может ли он получить эту информацию из самой базы данных? Другими словами, нужно ли предоставлять аннотации [Key] и т. Д. Или предоставлять информацию о конфигурации, описывающую отношения внешнего ключа, если не нужно создавать базу данных?
ОБНОВЛЕНИЕ: Чтобы сделать вещи немного яснее, следующий код - это то, о чем я говорю. Мне нужно вручную создать этот класс, полученный из DbContext. Я мог бы предоставить много информации о DB о свойствах в 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");
}
}
Я понимаю. Я не говорю об использовании EF для создания модели из базы данных. Но я поставлю строку соединения для объекта контекста. Он должен знать что-то о базе данных, чтобы сохранить данные. Мне просто интересно, нужно ли ему знать ВСЕ (ключи, отношения и т. Д.), Если он не собирается создавать базу данных. – Cynthia
При дальнейшем чтении кажется, что вам, возможно, нужно предоставить все для контекстного объекта, потому что вам нужно воссоздать в памяти все данные, которые обычно поставляются в XML в файле EDMX. Но я не уверен в этом ... следите за обновлениями. – Cynthia
Я обновил свое сообщение, чтобы включить код, который находится в центре моей озабоченности. – Cynthia