2017-10-18 18 views
0

コードを最初に使用するとエラーが発生するのはなぜですか?あなたに私のアプリケーションで簡単に見を与えるために、この私のクラスである:最初にコードを使用するとエラーが発生する

[Table("Votes")] 
public class Vote { 
    [Key()] 
    public int Id { get; set; } 

    [ForeignKey("User")] 
    public int UserId { get; set; } 
    public virtual User User { get; set; } 

    [ForeignKey("Answer")] 
    public int AnswerId { get; set; } 
    public virtual Answer Answer { get; set; } 
} 

そして、このコード行の後:

An unhandled exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll 

Additional information: An error occurred while updating the entries. See the inner exception for details. 

のでエラー:

Vote v = new Vote(); 
v.UserId = 1; 
v.AnswerId = 1; 

using (var context = new DatabaseContext()) { 
    context.Votes.Add(v); 
    context.SaveChanges(); 
} 

を私はエラーを取得していますcode firstSQLExpressデータベースを使用しているときに発生します。 database firstSQLiteというデータベースを使用している場合、それは魅力的なように機能しています。同じクラスですが、エラーはありません。

エラーが発生しないように気付いたので、v.Userv.Answerを初期化する必要があります。しかし、なぜ? database firstには必要ありませんでした。

+0

nullに設定して試してみてください。 –

+0

@ KeyurPATELはい、まだ動作していません。 'User'と' Answer'の新しいインスタンスを作成し、それらを 'v'オブジェクトのプロパティにするときだけ動作します。 – Dawvawd

+0

モデルビルダーを追加してください。 –

答えて

0

dbコンテキストクラスをコーディングしていないようです。 dbcontextクラスを作成する必要があります。

using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 
using Votes.Models; 
namespace vote.Context 
{ 
    public class DatabaseContext : DbContext 
    { 
     public DatabaseContext() : base("VotesDatabase") 
     { } 
     public DbSet<Vote> Votes{ get; set; } 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     } 
    } 
} 

ここでは、基本的なcodeFirst MVC appliactionについて理解しています。 Creating MVC Applications Using Entity Framework Code First Approach