2012-11-17 7 views
0

Compte tenu de ce code premier modèle de données, comment pourrais-je configurer ou mettre en œuvre une propriété de navigation LocalizedName sur l'entité Product, qui utilise la propriété LocalNameKey sur une instance Product pour l'une des clés, et le _languageId du contexte comme l'autre clé?la navigation à clé partagée avec le code ef premier

public class SampleDataContext : DbContext 
{ 
    int _languageId; 

    public SampleDataContext(int languageId) 
    { 
     _languageId = languageId; 
    } 

    public DbSet<LocalizedName> LocalNames { get; set; } 
    public DbSet<Product> Products { get; set; } 
    public DbSet<Language> Languages { get; set; } 
} 

public class LocalizedName 
{ 
    [Key, Column(Order = 0)] 
    public Guid Key { get; set; } 

    [Key, Column(Order = 1)] 
    public int LanguageId { get; set; } 

    public string Name { get; set; } 
} 

public class Language 
{  
    public int Id { get; set; } 
    public string Name{ get; set; } 
} 

public class Product 
{ 
    public int Id { get; set; } 
    public string Sku { get; set; } 
    public Guid LocalNameKey { get; set; } 
} 

Répondre

0

Non, vous ne pouvez pas. Si vous essayez, EF essayera de créer une table correspondant au contexte et probablement d'essayer de s'étouffer.

Vous devrez utiliser un modèle de référentiel pour vous assurer que les requêtes sur n'importe quelle entité localisée intègrent également un id de langage (qui serait encapsulé dans le référentiel, pas le contexte). En outre, avoir des FK à des entrées localisées pour chaque propriété individuelle d'une entité peut être très exigeant sur le plan des performances. Voir this Q&A pour quelques bons conseils (pas seulement la réponse acceptée).

+0

Ok, je pense que je comprends pourquoi ce n'est pas possible. Merci pour les informations sur la localisation des données. –

Questions connexes