我在不同的电脑上使用相同的代码有一个奇怪的问题。 这是mvc3代码的第一个项目。
我从svn下载了我的项目。按下构建按钮。像往常一样,db initializer方法已被调用并开始执行。它创建了几个包含一些数据的表。没问题。如你所见:
但是,要为应用程序创建用户,我决定在存储库类中执行此操作。因此我在初始化程序中调用我的create方法,这是我的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);
}
}
然而,在“使用块”(语句)中,当我仔细查看时,我的新数据库对象会为每个实体抛出空引用,
..并且添加用户时相应的“对象引用未设置为对象实例”错误。奇怪的是,完全相同的代码在不同的计算机上运行时没有错误。几乎相同的设置和操作系统。
有什么想法导致这个? 谢谢!
更新#1:StackTrace:
(InternalContext c) at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity) at System.Data.Entity.DbSet`1.Add(TEntity entity) 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:line 31 at Klmsncamp.DAL.KlmsnInitializer.Seed(KlmsnContext context) in C:\Users\Hp\Documents\Visual Studio 2010\Projects\Project2Klmsan\Klmsncamp\DAL\KlmsnInitializer.cs:line 212 at System.Data.Entity.DropCreateDatabaseAlways`1.InitializeDatabase(TContext context) at System.Data.Entity.Database.c__DisplayClass2`1.b__0(DbContext c) at System.Data.Entity.Internal.InternalContext.c__DisplayClass5.b__3() at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() at System.Data.Entity.Internal.LazyInternalContext.b__4(InternalContext c) at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
答案 0 :(得分:0)
你能否至少告诉我你的DbContext
课程,我想你可能没有把你的财产设置为DBset
类型
public class EnocDB : DbContext
{
public DbSet<EnocParcels> Parcels { get; set; }
public DbSet<ReviewEnoc> Reviews { get; set; }
}