2013-08-07 30 views
3

我想分裂一個傳統的用戶表到兩個實體使用一對一的映射,但不斷收到遷移錯誤,指出我的數據庫不同步,即使一切(我認爲是映射),我試圖建立一對一的關係。不能分割表與EF 5 - 代碼優先 - 與現有的數據庫

這是一個現有的數據庫(儘管我首先使用代碼作爲遷移將變得重要),但我沒有添加任何更改到數據庫(雖然我不確定什麼是一對一表拆分預計),我不斷收到這樣的:

The model backing the 'Context' context has changed since the database was created.  Consider using Code First Migrations to update the database 

我可以更新數據庫(手動或通過遷移),但不知道什麼是真正的不同步,因爲沒有新的領域已被添加和名稱相匹配。

BaseEntity:

public abstract class BaseEntity<T> 
{ 
    [Key] 
    public T Id { get; set; } 
    public DateTime CreatedOn { get; set; } 
} 

會員制模式:

public class Membership : BaseEntity<Guid> 
{ 
    public string UserName { get; set; } 
    public bool Approved { get; set; } 
    public bool Locked { get; set; } 
    public Profile Profile { get; set; } 
} 

簡介型號:

public class Profile : BaseEntity<Guid> 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Email { get; set; } 
    public string Telephone { get; set; } 
    public string Extension { get; set; } 
    public Membership Membership { get; set; } 
} 

會員映射(這有1對1的定義):

public class MembershipMap : EntityTypeConfiguration<Membership> 
{ 
    public MembershipMap() 
    { 
     //Primary Key 
     this.HasKey(t => t.Id); 

     //**Relationship Mappings 
     this.HasRequired(m => m.Profile) 
      .WithRequiredPrincipal(p => p.Membership); 

     //Properties & Column mapping 
     this.Property(m => m.Id) 
      .HasColumnName("PKID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 

     this.Property(m => m.UserName) 
      .HasColumnName("Username") 
      .HasMaxLength(255); 

     this.Property(m => m.Approved) 
      .HasColumnName("IsApproved"); 

     this.Property(m => m.Locked) 
      .HasColumnName("IsLocked"); 

     this.Property(m => m.CreatedOn) 
      .HasColumnName("CreationDate"); 

     this.ToTable("AppUser"); 
    } 
} 

配置文件映射:

public class ProfileMap : EntityTypeConfiguration<Profile> 
{ 
    public ProfileMap() 
    { 
     //Primary Key 
     this.HasKey(t => t.Id); 

     //Properties & Column mapping 
     this.Property(m => m.Id) 
      .HasColumnName("PKID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 

     this.Property(m => m.FirstName) 
      .HasColumnName("FirstName"); 

     this.Property(m => m.LastName) 
      .HasColumnName("LastName"); 

     this.Property(m => m.Email) 
      .HasColumnName("Email"); 

     this.Property(m => m.Telephone) 
      .HasColumnName("Telephone"); 

     this.Property(m => m.Extension) 
      .HasColumnName("Extension"); 

     this.ToTable("AppUser"); 
    } 
} 

數據庫表 我知道,並不是所有的字段映射,但是我做的在這個階段不需要他們,當然這不是問題嗎?

AppUser Database Table

+0

只是爲了澄清,你已經運行這個模型遷移? – evilbhonda

+0

我目前沒有使用任何遷移,數據庫已經存在,並且類的模型應該與數據庫的模型匹配。我現在正在審查整個事情,看看這是否在其他地方。 – Modika

+0

嘗試運行'update-database -script'命令,並查看Migrations生成的更改腳本。這應該給你一個線索,它缺少什麼。 – evilbhonda

回答