1
好的,讓我先解釋一下,這不是我的代碼。我正在接管另一名員工的項目。無論如何,這個項目正在使用Code First。我正在解決性能問題,但我得到一個奇怪的錯誤。如何不在EF中映射外鍵id(代碼優先)?
我基本上有兩個映射類來處理。我會編寫簡短的版本來簡潔。
public class User
{
public int UserId { get; set; } //primary key
//attributes here, not important
public int UserProfileId { get; set; } //foreign key id *i added this*
public UserProfile UserProfile { get; set; } //foreign key *i added this*
}
public class UserProfile
{
public int Id { get; set; } //primary key
//attributes here, not important
}
現在,這是一個非常標準的外鍵關係。但是,有一個警告。這些表正在從舊錶中刪除,如下所示:
modelBuilder.Entity<User>().ToTable("application_user");
然後,使用名稱將每個列映射到拉動的表的列。 不過,我想這兩個表合併成一比一的關係,像這樣:
modelBuilder.Entity<User>().HasRequired(x => x.UserProfile)
.WithMany()
.HasForeignKey(u => u.UserProfileId); //ERROR HERE - THIS COLUMN DOES NOT EXIST IN THE ORIGINAL TABLE
現在,錯誤,據我所知道的是,在上表中, (UserProfileId)沒有外鍵列,所以我得到一個無效的列名錯誤。
有沒有一種方法,我可以不映射外鍵id列,仍然保持一對一的關係?
貴'application_user'一個FK爲'UserProfile'表?或者'UserProfile'的PK也是'application_user'的FK? – Eranga