J'ai un projet POCO en code-I dans lequel j'essaie d'ajuster une base de données existante pour qu'elle se synchronise avec ce que EF attend, étant donné mon modèle existant.EF CTP4: Comment dire à EF qu'une colonne n'est PAS une identité
Je ces entités:
public class FlaggedDate
{
[Key]
public long scheduledDayID { get; set; }
[Required]
public DateTime date { get; set; }
[StringLength(50)]
[Required]
public string dateStatus { get; set; }
[Required]
public bool isVisit { get; set; }
[Required]
public bool hasAvailableSlots { get; set; }
[Required]
public bool hasInterviewsScheduled { get; set; }
// navigation properties
public ICollection<ScheduledSchool> scheduledSchool { get; set; }
public ICollection<Interview> interviews { get; set; }
public ICollection<PartialDayAvailableBlock> partialDayAvailableBlocks { get; set; }
public Visit visit { get; set; }
public ICollection<Event> events { get; set; }
}
et
public class Visit
{
[Key]
public long flaggedDateScheduledDayID { get; set; }
[Required]
public bool isFullDay { get; set; }
// navigation property
public FlaggedDate flaggedDate { get; set; }
}
La relation entre ces deux est 1: 0 | 1 - c.-à-FlaggedDate existera mais il peut ou non avoir un Objet de visite unique correspondant.
EF pense, sur la base de ce modèle, que FlaggedDate devrait avoir un champ supplémentaire, visit_flaggedDateScheduledDayID, qui est nullable. J'ai finalement réalisé pourquoi: il pense que le champ Visit, flaggedDateScheduledDayID, est une colonne d'identité. Ce n'est pas censé être une colonne d'identité; c'est supposé être une clé étrangère qui se connecte à FlaggedDate. Je pense que cela se fait par convention: Je me souviens avoir lu quelque chose à l'effet que dans CTP4, tout champ qui est une seule clé et est int ou long est supposé être une colonne d'identité.
Est-ce que je peux dire à EF que ce n'est PAS une colonne d'identité? J'ai essayé de jouer avec l'API Fluent, mais c'est un mystère pour moi, et il n'y a pas d'annotations de données que vous pouvez utiliser pour cela.
Ou, alternativement, est-ce que je peux me débrouiller avec les propriétés de navigation pour que ça sorte?