Entity Framework Code First Mappage des Clés Étrangères en Utilisant des API Fluent

J'ai la situation où un Utilisateur peut avoir plusieurs adresses. En conséquence, j'ai une ICollection sur ma classe d'utilisateur. Mais je tiens également à l'utilisateur d'être en mesure de choisir une adresse par défaut. J'ai donc fait le suivant:

public class User 
{
    public int Id { get; set; }
    public int? DefaultAddressId { get; set; }
    [ForeignKey("DefaultAddressId")]
    public virtual Address DefaultAddress { get; set; }
    public virtual ICollection<Address> Addresses { get; set; }
    //properties were removed for purpose of this post
}

Je voudrais enlever le public virtual Address DefaultAddress { get; set; } au total, garder le DefaultAddressId et de la carte à l'aide de l'API Fluent au lieu de cela, car la configuration actuelle, est à l'origine de beaucoup de problèmes (dans ce cas, et d'autres classes où j'en ai un similaire de l'installation). Donc cela peut être fait en utilisant l'api fluent?

Mise à JOUR:
L'adresse de la classe ne dispose pas actuellement de toute référence à l'Utilisateur de la classe, c'est un uni-directionnelle de la relation. Mais oui, une adresse appartient à UN seul utilisateur, ce n'est pas une relation plusieurs-à-plusieurs. Voici l'adresse de la classe:

public class Address
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Details { get; set; }
    public virtual Area Area { get; set; }
}
Comment le Address classe? A-t-elle une référence à un seul User de sorte que chaque Adresse appartient uniquement à un utilisateur? Ou les utilisateurs peuvent partager une Adresse dans ce cas, je m'attends à une plusieurs-à-plusieurs relation?
J'ai juste mis à jour à la question. Vérifiez s'il vous plaît.
Pourquoi avez-vous eu des problèmes avec public virtual Address DefaultAddress { get; set; }? À mon avis, cette propriété est la meilleure façon d'exprimer la relation que vous souhaitez avoir et je ne vois pas le problème de cette carte à la DB. Si vous supprimez la propriété (et qui n'ont pas User propriété à la classe d'Adresse) DefaultAddressId devient essentiellement une propriété scalaire qui ne participent pas à une relation. Si vous perdez la clé étrangère contrainte vérifie dans la base de données (chaque nombre peut être dans cette propriété, peu importe si une adresse avec cet IDENTIFIANT existe ou pas).
Je ne suis pas sûr de savoir pourquoi il y a des problèmes. Ça marchait très bien avant la mise à jour vers 4.1 EF en plus d'autres problèmes que je n'ai pas encore résolu encore. reportez-vous à cette question
J'ai testé votre modèle tel qu'il est ci-dessus dans vos questions et il fonctionne très bien pour moi. Ce modèle est en fait exactement la solution que j'ai choisi de travailler avec une collection d'Adresses et un DefaultAddress. Je crois, que vos complications sont quelque part d'autre.

OriginalL'auteur Kassem | 2011-03-30