ユーザーがページ上の特定の要素の横にあるボタンをクリックすると、エレメントにisAccepted値を変更してもらいます。ボタンが押されると、db.SaveChanges()コマンドはEntityValidationErrors型の例外をスローします。EF6相対テーブル値の更新
コントローラ
namespace WebApplication6.Controllers
{
public class AppController : Controller
{
[HttpGet]
public ActionResult Accept(int? id)
{
EmailFormModel itemToUpdate = db.ProjectInfo.Find(id);
itemToUpdate.isAccepted = true; //only value I want to change
db.SaveChanges();
return RedirectToAction("MainDbView");
}
}
}
モデル
public class EmailFormModel
{
public EmailFormModel()
{
isAccepted = false;
Ressurs = new List<RessursBehov>() { new RessursBehov() };
}
public int id { get; set; }
public bool isAccepted { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Prosjektnummer"), RegularExpression(@"^([pP])\d*$", ErrorMessage = "Prosjektnummer er på formen: p1234 ")]
public string Prosjektnummer { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Prosjektnavn")]
public string Prosjektnavn { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Prosjekttype")]
public string Prosjekttype { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Prosjektleder")]
public string Prosjektleder { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Skjema utfylt av")]
public string Prosjektregistrerer { get; set; }
[Required]
public virtual List<RessursBehov> Ressurs { get; set; }
}
public class RessursBehov
{
public int id { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Ressurstype")]
public string Ressurstype { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Navn på ressurs")]
public string Navn_På_Ressurs { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Ukenummer"), RegularExpression(@"^([1-9]|[1-4][0-9]|5[0-2])$", ErrorMessage = "Ugyldig verdi")]
public int? Ukenummer { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Antall timer"), RegularExpression(@"^([1-9]|[1-9][0-9])$", ErrorMessage = "Ugyldig verdi")]
public int? Antall_Timer { get; set; }
[Required(ErrorMessage = "påkrevet"), Display(Name = "Antall uker"), RegularExpression(@"^([1-9]|[1-9][0-9])$", ErrorMessage = "Ugyldig verdi")]
public int? Antall_Uker { get; set; }
[Required]
public virtual EmailFormModel realemailformmodel { get; set; }
}
Contextクラス
public class TalkToDb : DbContext
{
public DbSet<EmailFormModel> ProjectInfo { get; set; }
public DbSet<RessursBehov> ProjectExtra { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//one-to-many
modelBuilder.Entity<RessursBehov>()
.HasRequired<EmailFormModel>(s => s.realemailformmodel)
.WithMany(s => s.Ressurs);
}
}
UPDATE
これは私が取得エラーです:スロー
例外:EntityFramework.dll iisexpress.exe情報の 'System.Data.Entity.Validation.DbEntityValidationException':0:不動産:Ressurstypeエラー:påkrevet
iisexpress.exe情報:0:不動産:Navn_På_Ressursエラー:påkrevet
iisexpress.exe情報:0:不動産:Ukenummerエラー:påkrevet
iisexpress.exe情報:0:不動産:Antall_Timerエラー:påkrevet
iisexpress.exe情報:0:不動産:Antall_Ukerエラー:påkrevet
http://stackoverflow.com/questions/5400530/validation-failed-for-one-or-more-entities-while-saving-changes-to-sql-server-da - 有用な洞察力エラーをデバッグするには – RabidDog5150
例外を書き込む –