2016-09-12 1 views
1

Est-il possible dans Entity Framework d'utiliser un type complexe comme clé pour une entité et de la mapper à une base de données existante?Entity Framework Complex La propriété Type en tant que clé

Disons que je base de données comme ceci:

create table people (id int, name nvarchar(128)) 

et je voudrais cartographier la structure C# de classe suivante à ce tableau:

class PersonId 
    { 
     public int Id { get; set; } 
    } 

    class Person 
    { 
     public PersonId Id { get; set; } 
     public string Name { get; set; } 
    } 

Comment pourrais-je faire cela?

-Dmytro

+0

Réponse courte: Aucune clé n'est permise dans les propriétés de type complexe et le type complexe n'est pas une clé. Meilleure réponse: voir Ted ci-dessous pour les choses qui fonctionnent réellement. Si vous voulez avoir un ensemble de propriétés pour toutes les classes d'entités, vous pouvez utiliser l'héritage avec table par type de béton. Peut-être que vous pouvez être plus précis concernant votre problème de conception sous-jacent à côté de votre solution qui ne marche pas. – grek40

Répondre

0

Quel est le point d'avoir une classe séparée PersonId si vous avez seulement sur la propriété? cela me semble être une mauvaise pratique. Peut-être que tout ce dont vous avez besoin est une clé composite. Pour utiliser dans EF vous pouvez déclarer votre classe comme ceci:

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

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

L'intention que je suppose est fortement typée Id pour éviter de comparer des pommes à des oranges, même si les deux adressées par nombre entier dans la base de données –