0

ターゲットプロバイダーがSQLServerCEの場合に取得しNullReferenceExceptionますが、SQLServerExpressを使用すると機能します。return...にアクセスしようとすると、例外が発生しますComments。モデルは非常に単純であり、コードから推測できます。助けてくれてありがとう!ちなみに、私はEntityFrameworkコードファースト4.3とSQLServerCE4.0を使用しています。

  • SQLServerExpressでプロバイダーと同じコードを使用する=正常に実行される

  • SQLServerCEでプロバイダーと同じコードを使用する=例外エラー

また、SQLServerCEにも問題はありません。それは私のマシンで動作し、EntityFrameworkのコードファーストおよびasp.net認証で単一テーブル操作を実行しました。関連するエンティティでこのようなネストされた追加/削除を行ったことがないので、なぜこれが機能しないのか興味があります。

            db.Persons.Add(new Person()
            {
                FullName = "JC Viray",
                Comments = new List<Comment>(){
                         new Comment(){CommentContent="Hello!"},
                         new Comment(){CommentContent="World!"}
            }
            });

            db.SaveChanges();

            return db.Persons.FirstOrDefault().Comments.FirstOrDefault().CommentContent;

また、SQL Server Expressでは、データを調べるとコメントが表示されているのが気になります。

SQL Server CEでは、テーブルが空Personsの間、テーブルのみにデータがあります。Comments

編集:

それが役立つ場合は、ここにモデルがあります:

    public class Person
{
    [Key]
    public int PersonId { get; set; }
    public string FullName { get; set; }

    public virtual ICollection<Comment> Comments { get; set; }
}

public class Comment
{
    [Key]
    public int CommentId { get; set; }
    public string CommentContent { get; set; }

    [ForeignKey("Person")]
    public int PersonId { get; set; }
    public virtual Person Person { get; set; }
}
4

1 に答える 1

1

問題は、SQL CE エラーの詳細は、SQL Server Express をプロバイダーとして使用する場合よりもはるかに曖昧であるため、混乱と曖昧な方向性です。

SQLCE 例外の詳細は次のようなものです。

NullException

SQLExpress 例外の詳細は次のようなものです。

データベースが作成されてから、「MyContext」コンテキストをサポートするモデルが変更されました。Code First Migrations を使用してデータベースを更新することを検討してください (http://go.microsoft.com/fwlink/?LinkId=238269)。

解決策は、次のコードを追加してモデルを同期することです。

Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());

于 2012-04-05T20:37:22.050 に答える