2011-01-24 5 views
2

Salut je suis en utilisant CTP5 à la carte entre deux entités de ce genre:Entity Framework 4.0 CTP5 One to One Mapping

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

    public string UserName { get; set; } 
    public string Password { get; set; } 
    public bool IsManager { get; set; } 
    public decimal Credit { get; set; } 
    public int CreditAlertCount { get; set; } 
    public decimal TelPrice { get; set; } 
    public decimal CellPrice { get; set; } 
    public DateTime InsertDate { get; set; } 
    public IList<string> PhoneList { get; set; } 
    public int UserTypeId { get; set; } 
    public virtual UserType UserType { get; set; } 
} 

public class UserType 
{ 
    public int Id { get; set; } 
    public int UserLevel { get; set; } 
    public string TypeDescription { get; set; } 
} 

// voici les configurations

public class UserConfig : EntityTypeConfiguration<User> 
{ 
    public UserConfig() 
    { 

     HasKey(c => c.Id); 
     Property(c => c.Id).HasDatabaseGenerationOption(DatabaseGenerationOption.Identity).HasColumnName("ID"); 
     Property(c => c.InsertDate).HasDatabaseGenerationOption(DatabaseGenerationOption.Computed).HasColumnName("INSERT_DATE"); 
     Property(c => c.IsManager).HasDatabaseGenerationOption(DatabaseGenerationOption.Computed).HasColumnName("IS_MANAGER"); 
     Property(c => c.UserName).HasMaxLength(25).IsRequired().HasColumnName("USER_NAME"); 
     Property(c => c.Password).HasMaxLength(25).IsRequired().HasColumnName("USER_PASSWORD"); 
     Property(c => c.CellPrice).IsRequired().HasColumnName("CELL_PRICE"); 
     Property(c => c.TelPrice).IsRequired().HasColumnName("TEL_PRICE"); 
     Property(c => c.CreditAlertCount).IsRequired().HasColumnName("CREDIT_ALERT_COUNT"); 
     Property(c => c.Credit).IsRequired().HasColumnName("CREDIT"); 
     Property(c => c.UserTypeId).IsOptional().HasColumnName("USER_TYPE_ID"); 

     /*relationship*/ 
     HasRequired(p => p.UserType).WithMany().IsIndependent().Map(m => m.MapKey(p => p.Id, "USER_TYPE_ID")); 

     ToTable("CRMC_USERS", "GMATEST"); 
    } 
} 

public class UserTypeConfig : EntityTypeConfiguration<UserType> 
{ 
    public UserTypeConfig() 
    { 
     /*Identity*/ 
     HasKey(c => c.Id); 
     Property(c => c.Id).HasDatabaseGenerationOption(DatabaseGenerationOption.Identity).HasColumnName("ID"); 

     /*simple scalars*/ 
     Property(s => s.TypeDescription).IsRequired().HasColumnName("DESCRITPION"); 
     Property(s => s.UserLevel).IsRequired().HasColumnName("USER_LEVEL"); 

     ToTable("CRMC_USER_TYPES", "GMATEST"); 
    } 
} 

Que dois-je faire mal mon utilisateur .UserType = null?

Comment diable puis-je mapper ceci au travail !?

Je meurs ici pendant 3 jours pour que ça marche.

J'utilise DevArt Connection 6,058 ... quelque chose Oracle 10g, C# 4.0 EntityFramework

Répondre

0

Vous avez une configuration nécessaire association entre l'utilisateur et UserType donc vous ne pouvez pas avoir un objet utilisateur sans UserType (ie User.UserType == null). Pour être en mesure de faire ce que vous devez faire 2 changements à votre modèle d'objet et API couramment:

1.Changer le type de propriété à UserTypeIdint?:

public int? UserTypeId { get; set; }

2.Retirer le code de votre fluent API qui lit: HasRequired(p => p.UserType).WithMany().IsIndependent().Map(m => m.MapKey...

Vous n'avez besoin de rien de ce genre. Tout sera configuré par code d'abord basé sur convention pour vous.

+0

Salut, merci pour la réponse, mais cela ne fonctionne pas pour une raison quelconque. – IamStalker

+0

Pour une raison quelconque, quand je fais Inclure, il construit la requête correcte pour récupérer les bonnes entités, mais quand je fais un simple FindById (int id), il échoue et renvoie UserType == null. Désolé pour le commentaire tardif. – IamStalker

+0

Salut, j'ai résolu ce problème en ajoutant le ((IObjectContextAdapter) this) .ObjectContext.ContextOptions.ProxyCreationEnabled = true; Merci beaucoup pour votre réponse, pouvez-vous s'il vous plaît me référer à anyu des blogs que vous avez écrit avec les problèmes de cartographie? – IamStalker

Questions connexes