我有一個數據庫,我有實體POCO的,我想使用EF的所有我想要在兩者之間進行映射並跟蹤加載,保存等的更改。EF CTP4:僅用於代碼,不需要生成數據庫,需要多少數據庫信息?
我一直在閱讀很多關於「Code First」的文獻(比如它),並且我不清楚在不會生成數據庫時需要提供多少數據庫信息。
例如,EF是否需要知道哪些屬性是鍵,字符串屬性的最大長度,表之間的關係等?或者如果它確實需要知道,它是否可以從數據庫本身獲取這些信息?換句話說,如果不需要創建數據庫,是否必須提供[Key]註釋等,或者提供詳細說明外鍵關係的配置信息?
更新:爲了使事情更清楚些,下面的代碼就是我正在談論的內容。我必須手動創建從DbContext派生的這個類。我可以提供關於OnModelCreating中的屬性或附加到實體類中屬性的屬性的大量DB信息。
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 2010-09-02 16:10:22
在進一步閱讀中,似乎您可能必須將所有內容都提供給上下文對象,因爲您必須在內存中重新創建EDMX文件中通常以XML格式提供的所有數據。但我不確定...請繼續關注。 – Cynthia 2010-09-02 16:12:24
我已更新我的帖子以包含我關注的焦點所在的代碼。 – Cynthia 2010-09-02 16:21:51