Entity Framework "un à plusieurs" de la relation du premier code

Je vais avoir mes premiers pas en EF 4.1. Parce que j'ai été en utilisant NHibenate, le code de la première approche me semble que le meilleur. J'ai un problème avec une bonne cartographie de l'un-à-plusieurs ou plusieurs-à-une) relation. Disons que j'ai 2 entités:

class ClientModel
{
    int ClientID;
    string Name;
    virtual IList<OrderModel> Orders;
}

class OrderModel
{
    int OrderID;
    string Details;
    virtual ClienModel Client;
}

Quand je le laisse comme ça, il y a une erreur lors de la génération de la base de données - clés dans les tableaux sont manquants. J'ai compris, je peux le résoudre en changeant les noms des clés d'identification (mais ce n'est pas OK avec mon naming convention) ou par l'ajout de [Key] annotation. Même si j'ajoute cette annotation, toujours les noms de tables sont mal - tout comme les classes de noms, mais avec un "s".
J'ai donc essayé d'utiliser l'API fluent - j'ai fait des mappages. Mais si j'ai mis les mappages comme ici:

class ClientMapping
{
    ClientMapping()
    {
        this.HasKey(e => e.ClientID).Property(e => e.ID).HasColumnName("ClientID");
        this.Property(e => e.Name).HasColumnName("Name");
        this.HasMany(e => e.Orders).WithOptional().Map(p => p.MapKey("OrderID")).WillCascadeOnDelete();
        this.ToTable("Clients");
    }
}

class OrderMapping
{
    OrderMapping()
    {
        this.HasKey(e => e.OrderID).Property(e => e.OrderID).HasColumnName("OrderID");
        this.Property(e => e.Details).HasColumnName("Details");
        this.HasRequired(e => e.Client).WithMany().Map(p=>p.MapKey("Client")).WillCascadeOnDelete(false);
        this.ToTable("Orders");
    }
}

la relation betweene tables dans la base de données est doublé.
Quelle est la bonne façon de le faire un-à-plusieurs relations à l'aide de code-première approche? Suis-je la pensée dans la bonne direction ou est-ce un mal?

MODIFIER

OK, je l'ai fait à la manière @Eranga a montré, mais il y a encore un problème. Quand je suis Client de base de données, de ses Commandes, la propriété est null (mais dans la base de données qu'il a certaines Commandes avec la Commande.ClientID == Client.ClientID).

J'ai testé la configuration donnée dans ma réponse et il fonctionne très bien. Assurez-vous que Orders est une propriété qui n'est pas un champ.
Essayez virtual List<OrderModel> Orders; au lieu de virtual IList<OrderModel> Orders;

OriginalL'auteur rideronthestorm | 2011-09-21