2011-06-10 4 views
0

Ma question est semblable à celui-ci:Une à une relation avec EF 4.1 premier code

->Many to one configuration using EF 4.1 code first

Il existe des solutions API couramment sur Google, avec dépassement méthode "OnModelCreating" et le réglage manuel les options de clé étrangère. Mais je préférerais une solution avec des annotations de données si c'est possible. Parce que je voudrais utiliser des propriétés inverses lors du codage. Tels que l'objet TypeA a un objet TypeB. L'objet TypeB doit donc avoir une propriété ParentTypeA. Exemple:

public class User : IUser 
{ 
    [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 

    [RegularExpression(@"[A-Za-z0-9_\-\.]{2,32}"), MinLength(2), MaxLength(32)] 
    [Required(AllowEmptyStrings = false)] 
    public string UserName { get; set; } 

    // other props .... 
    // .... 

    public virtual UserGallery Gallery { get; set; } 
} 

public class UserGallery : IUserGallery 
{ 
    [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserGalleryId { get; set; } 

    // other props .... 
    // .... 

    public virtual User ParentUser { get; set; } 
} 
+0

duplication possible de [Comment déclarer une relation individuelle en utilisant Entity Framework 4 Code First (POCO)] (http://stackoverflow.com/questions/3622572/how-to-declare-one-to-one-relationship -using-entity-framework-4-code-first-poco) –

Répondre

1

Une conventions façon de le faire en premier code est d'utiliser l'ID utilisateur comme clé primaire de l'objet UserGallery. C'est bien si c'est une vraie relation un à un.

public class UserGallery : IUserGallery 
{ 
    [Key] 
    public int UserId {get;set;} 
    public User User {get;set;} 
    etc... 
} 

Cela a fonctionné bien pour moi dans le passé.

+0

cela ne fonctionne pas pour moi maintenant dans EF 4.1 ... –

+0

Strange. J'ai essayé encore après tout ce temps et cela fonctionne maintenant :) –

+0

@Michal B utilisez-vous la même version de EF que vous étiez alors? –

Questions connexes