EF6 le Premier Code: à l'Aide d'API Fluent pour déclarer une Clé Étrangère

Je suis en train de travailler sur un secteur de l'assurance liée app avec EF 6 et le Premier Code. Pour cette application, chaque Compte peut avoir plusieurs Stratégies et chaque Politique peut avoir plusieurs Transactions. De plus, chaque Compte doit avoir une relation à l'Identité (Nom, Adresse, Ville, etc.). La Politique a aussi une relation à une Identité, mais il est facultatif.

Parce que de Compte -> l'Identité et le Compte ->> Politique -> Identité, j'ai trouvé que j'ai besoin d'utiliser l'API Fluent pour définir la WillCascadeDelete à Faux pour au moins l'un de ces chemins.

Ma question est comment puis-je configurer le Compte.IdentityId et de la Politique.InsuredIdentityId des propriétés de clés étrangères? J'ai évité d'ajouter tout de la navigation et des champs de clé étrangère à l'identité de classe, car il ne devrait jamais être une raison pour passer d'une identité à une autre classe. C'est pourquoi je vais avoir un moment difficile de trouver cela?

public class Account
{
    public long Id { get; set; }
    public long IdentityId { get; set; }
    public virtual Identity Identity { get; set; }

    public ICollection<Policy> Policies { get; set; }
}

public class Policy
{
    public long Id { get; set; }

    public long AccountId { get; set; }
    public virtual Account Account { get; set; }

    public bool UseAccountIdentity { get; set; }
    public long InsuredIdentityId { get; set; }
    public virtual Identity InsuredIdentity { get; set; }
}

 public class Identity 
{        
    public long Id { get; set; }

    public string Name { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
}

public class AccountConfiguration : EntityTypeConfiguration<Account>
{
    public AccountConfiguration()
    {
        HasRequired(a => a.Identity).WithOptional(x => x.Account).WillCascadeOnDelete(false);
        HasMany(a => a.Policies).WithRequired(p => p.Account).HasForeignKey(p => p.AccountId);
    }
}

public class PolicyConfiguration : EntityTypeConfiguration<Policy>
{
    public PolicyConfiguration()
    {
        HasOptional(p => p.InsuredIdentity).WithOptionalPrincipal().WillCascadeOnDelete(false);
    }
}

Que d'un côté de la question, existe-il des bons livres ou d'autres sources de référence pour EF Premier Code? J'ai Julia Lerman Programmation Entity Framework: le Premier Code, ce qui est bien pour les exemples qu'il couvre, mais il ne couvre pas assez les affaires.

OriginalL'auteur Steve Wash | 2014-01-16