8

次のエラーが表示されます。

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

Update-Databaseパッケージ マネージャー コンソールでコマンドを使用してデータベースを更新しようとすると。

Visual Studio の出力ウィンドウに行を書き込むにはどうすればよいですか?

私は試した:

try
{
    context.SaveChanges();
}
catch (System.Data.Entity.Validation.DbEntityValidationException e)
{
    foreach (var eve in e.EntityValidationErrors)
    {
        System.Diagnostics.Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            eve.Entry.Entity.GetType().Name, eve.Entry.State);
        foreach (var ve in eve.ValidationErrors)
        {
            System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                ve.PropertyName, ve.ErrorMessage);
        }
    }
    throw;
}

しかし、それはうまくいきませんでした。これをデバッグする方法に関する他の提案はありますか?

4

2 に答える 2

21

VS出力ウィンドウへの書き込みが機能しない理由と、それを機能させる方法がわかりません。しかし、最後の手段として、エラーをテキスト ファイルに書き込んでください。このファイルは、使用しているアプリケーションの種類に関係なく動作するはずです。

try
{
    context.SaveChanges();
}
catch (System.Data.Entity.Validation.DbEntityValidationException e)
{
    var outputLines = new List<string>();
    foreach (var eve in e.EntityValidationErrors)
    {
        outputLines.Add(string.Format(
            "{0}: Entity of type \"{1}\" in state \"{2}\" has the following validation errors:",
            DateTime.Now, eve.Entry.Entity.GetType().Name, eve.Entry.State));
        foreach (var ve in eve.ValidationErrors)
        {
            outputLines.Add(string.Format(
                "- Property: \"{0}\", Error: \"{1}\"",
                ve.PropertyName, ve.ErrorMessage));
        }
    }
    //Write to file
    System.IO.File.AppendAllLines(@"c:\temp\errors.txt", outputLines);
    throw;

    // Showing it on screen
    throw new Exception( string.Join(",", outputLines.ToArray()));

}
于 2013-05-17T23:01:40.023 に答える