J'ai une base de données, et j'ai l'entité POCO, et tout ce que je veux utiliser EF pour est de cartographier entre les deux et garder une trace des changements pour le chargement, l'enregistrement, etcEF CTP4: Pour le code uniquement, aucune génération de base de données nécessaire, combien d'informations de base de données sont nécessaires?
J'ai lu beaucoup de la littérature (telle qu'elle est) sur "Code First", et je ne suis pas clair sur la quantité d'informations de base de données que je dois fournir quand il n'y aura pas de base de données générée.
Par exemple, EF a-t-il besoin de savoir quelles propriétés sont des clés, la longueur maximale des propriétés de la chaîne, les relations entre les tables, etc.? Ou si elle a besoin de savoir, peut-elle obtenir cette information de la base de données elle-même? En d'autres termes, dois-je fournir des annotations [Key] et autres, ou fournir des informations de configuration détaillant les relations de clé étrangère, si aucune base de données n'a besoin d'être créée? MISE À JOUR: Pour rendre les choses un peu plus claires, le code suivant est de quoi je parle. Je dois créer manuellement cette classe dérivée de DbContext. Je pourrais fournir beaucoup d'informations de DB sur les propriétés dans OnModelCreating, ou dans les attributs attachés aux propriétés dans les classes d'entité.
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");
}
}
Je comprends. Je ne parle pas d'utiliser EF pour créer le modèle à partir de la base de données. Mais je fournis une chaîne de connexion à l'objet contexte. Il doit savoir quelque chose sur la base de données afin de sauvegarder les données. Je me demande simplement si elle a besoin de savoir TOUT (clés, relations, etc.) si elle ne va pas créer la base de données. – Cynthia
En lisant plus loin, il semble que vous deviez peut-être tout fournir à l'objet contexte, car vous devez recréer en mémoire toutes les données normalement fournies en XML dans le fichier EDMX. Mais je ne suis pas sûr de ça ... restez à l'écoute. – Cynthia
J'ai mis à jour mon message pour inclure le code qui est au centre de mes préoccupations. – Cynthia