沒有一個類似的問題似乎能夠解決這個問題。我正在使用實體框架5,MVC 4,.NET 4.5爲我的web應用程序,設計與VS 2012.Code First EF5:一對零或一對一關係不起作用
我有2類應該是在父子關係。
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
// Other stuff
public int? JoggerId { get; set; }
public virtual Jogger Jogger{ get; set; }
}
和
public class Jogger
{
[Key]
public int JoggerId { get; set; }
[Required, ForeignKey("UserId")]
public int UserId { get; set; }
public virtual UserProfile UserProfile { get; set; }
}
隨着流利API:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<UserProfile>()
.HasOptional(x => x.Jogger)
.WithRequired(c => c.UserProfile)
.WillCascadeOnDelete(true);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
用戶可以是一個齊紙機也不能是慢跑即一個用戶到零個或一個齊紙機。 EF Powertools edmx視圖中的關係看起來不錯,但我無法使用外鍵與UserProfile UserId一起使用。
是我的Fluent API錯誤還是我的模型?請幫助 - 我真的被卡住了!
謝謝Slauma。我試過這個,id已經解決了,但是在id值沒有更新的時候出現了同樣的錯誤。 'INSERT語句與FOREIGN KEY約束「UserProfile_Jogger」衝突。數據庫「aspnet-20130725111018」,表「dbo.UserProfile」,列'UserId'發生衝突。 該聲明已被終止。'當我添加一個用戶的完美,但是當我添加慢跑者配置文件時,它會中斷。欣賞協助。 Springbokkie – Springbokkie
@Springbokkie:'Jogger'是依賴於'UserProfile'的實體。當你添加一個'Jogger'時,你必須將其關鍵屬性'JoggerId'設置爲一個有效的現有'UserProfile'鍵。 JoggerId不是數據庫生成的密鑰,因此您必須手動提供值。 – Slauma
謝謝。我是否修改慢跑者課程JoggerId {get;設置{= UserProfile.UserId};}或者我將它設置爲創建?如果在課堂上設置,請告訴我使用什麼代碼。對不起 - 我真的很新鮮。 – Springbokkie