作为学校的一个项目,我们正在使用带有sqlite数据库的EF核心创建一个移动应用程序。 遵循MVVM模式和SimpleIoc进行依赖项注入。
一切正常,直到我调用dbContext.SaveChanges();方法为止。我有以下课程:
public class ViewModelLocator
{
public ViewModelLocator()
{
SimpleIoc.Default.Register<IUserService, UserService>();
SimpleIoc.Default.Register<IUserRepository<User>, UserRepository>();
SimpleIoc.Default.Register<RegistrationPageViewModel>();
SimpleIoc.Default.Register<LoginPageViewModel>();
}
public RegistrationPageViewModel RegistrationVM => SimpleIoc.Default.GetInstance<RegistrationPageViewModel>();
public LoginPageViewModel LoginVM => SimpleIoc.Default.GetInstance<LoginPageViewModel>();
}
public class DatabaseContext : DbContext
{
public DatabaseContext()
{
this.Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite(@"Data Source = C:\temp\SplitbillMobile.db") ;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("Users");
}
public DbSet<User> Users { get; set; }
}
当我进入UserRepository类以将用户添加到数据库时:
public bool AddUser(User user)
{
try
{
var context = new DatabaseContext();
context.Users.Add(user);
context.SaveChanges();
return true;
}
catch (Exception)
{
return false;
}
}
当它试图运行context.SaveChanges();时。它说我的上下文为空。 或者,当我删除DatabaseContext类中除OnConfiguring和DbSet之外的所有内容时,收到以下异常:
任何帮助将不胜感激!
谢谢。