我想分裂一個傳統的用戶表到兩個實體使用一對一的映射,但不斷收到遷移錯誤,指出我的數據庫不同步,即使一切(我認爲是映射),我試圖建立一對一的關係。不能分割表與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");
}
}
數據庫表 我知道,並不是所有的字段映射,但是我做的在這個階段不需要他們,當然這不是問題嗎?
只是爲了澄清,你已經運行這個模型遷移? – evilbhonda
我目前沒有使用任何遷移,數據庫已經存在,並且類的模型應該與數據庫的模型匹配。我現在正在審查整個事情,看看這是否在其他地方。 – Modika
嘗試運行'update-database -script'命令,並查看Migrations生成的更改腳本。這應該給你一個線索,它缺少什麼。 – evilbhonda