2011-01-24 89 views
2

嗨,我使用CTP5兩個實體像之間進行映射:實體框架4.0 CTP5一對一的映射

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; } 
} 

//這裏是配置

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"); 
    } 
} 

我做了什麼錯我的用戶.UserType = null?

如何讓我映射這個工作!?

我在這裏死了3天來工作。

我使用DevArt連接6.058 ...有些事情 Oracle 10g中,C#的EntityFramework 4.0

回答

0

你設置一個用戶和用戶類型之間的關聯,所以你不能有一個用戶對象所需無UserType(即User.UserType == null)。爲了能夠做到這一點,你需要做2名更改您的對象模型和API流利:

1.更改UserTypeId屬性的類型int?

public int? UserTypeId { get; set; }

2.取出代碼從你的流利讀取的API: HasRequired(p => p.UserType).WithMany().IsIndependent().Map(m => m.MapKey...

您不需要任何這些東西。一切都將由Code First根據您的約定進行配置。

+0

嗨,謝謝你的答案,但它不起作用的原因。 – IamStalker 2011-01-25 07:24:19