1

別の PC で同じコードを使用すると奇妙な問題が発生します。これは mvc3 コードの最初のプロジェクトです。

プロジェクトをsvnからダウンロードしました。ビルドボタンを押しました。いつものように、db 初期化メソッドが呼び出され、実行が開始されました。いくつかのデータを含むいくつかのテーブルを作成しました。問題なし。ご覧のように :

ここにいくつかのスクリーンショット、コードの実行があります。申し訳ありませんが、担当者が必要なのでここに投稿できません。画像 #0-#1-#2)

ただし、アプリケーションのユーザーを作成するには、リポジトリ クラスで行うことにしました。したがって、私はイニシャライザ内で作成メソッドを呼び出します。これが私のusercreate関数です:

public MembershipUser CreateUser(string username, string firstname, string lastname, string password, string email)
    {
        using (KlmsnContext db = new KlmsnContext())
        {
            User user = new User();

            user.UserName = username;
            user.FirstName = firstname;
            user.LastName = lastname;
            user.Email = email;
            user.PasswordSalt = CreateSalt();
            user.Password = CreatePasswordHash(password, user.PasswordSalt);
            user.CreatedDate = DateTime.Now;
            user.IsActivated = false;
            user.IsLockedOut = false;
            user.LastLockedOutDate = DateTime.Now;
            user.LastLoginDate = DateTime.Now;

            db.Users.Add(user);

    db.SaveChanges();

            return GetUser(username);
        }
    }

ただし、「ブロックの使用」(ステートメント) でよく見ると、新しい db オブジェクトがすべてのエンティティに対して null 参照をスローします。

スクリーンショットの画像 #3-#4

..それに応じてユーザーの追加が失敗し、同じ「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。奇妙なことに、まったく同じコードが別のコンピューターでエラーなしで実行されます。ほぼ同じセットアップとOSで。

これを引き起こしているものについてのアイデアはありますか? ありがとう!

更新 #1: StackTrace :

    (InternalContext c)
   System.Data.Entity.Internal.RetryAction`1.PerformAction (TInput 入力) で
    System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput 入力) で
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1
    アクション)
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() で
    で
    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type)
    entityType)
    System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() で
    System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() で
    System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(アクション アクション、EntityState newState、オブジェクト エンティティ、文字列 methodName) で System.Data.Entity.Internal.Linq.InternalSet`1.Add(オブジェクト エンティティ) でSystem.Data.Entity.DbSet`1.Add(TEntity エンティティ) at Klmsncamp.Models.UserRepository.CreateUser(String username, String firstname, String lastname, String password, String email) in C:\Users\Hp\Documents\Visual Studio 2010\Projects\Project2Klmsan\Klmsncamp\Models\UserRepository.cs: C:\Users\Hp\Documents\Visual Studio 2010\Projects\Project2Klmsan\Klmsncamp\DAL の Klmsncamp.DAL.KlmsnInitializer.Seed(KlmsnContext コンテキスト) の 31 行目\KlmsnInitializer.cs: System.Data.Entity.DropCreateDatabaseAlways`1.InitializeDatabase(TContext) の 212 行目
    環境)
    で
    System.Data.Entity.Database.c__DisplayClass2`1.b__0(DbContext
    c)
    で
    System.Data.Entity.Internal.InternalContext.c__DisplayClass5.b__3()
    で
    System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action
    アクション)
    で
    System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
    で
    System.Data.Entity.Internal.LazyInternalContext.b__4(InternalContext
    c)
    System.Data.Entity.Internal.RetryAction`1.PerformAction (TInput 入力) で
4

1 に答える 1

0

少なくともあなたのDbContextクラスを見せてもらえますか、おそらくプロパティをDBsetTypeに設定していないと思います

public class EnocDB : DbContext
  {
      public DbSet<EnocParcels> Parcels { get; set; }
      public DbSet<ReviewEnoc> Reviews { get; set; }
  }
于 2014-02-23T15:11:18.720 に答える