EF不保存或获取数据

时间:2017-05-01 14:41:04

标签: c# entity-framework

您好我有以下代码:

这是控制器中的动作

[HttpPost]
[ValidateAntiForgeryToken]
    public ActionResult Create(Category category)
    {
        string currentUserId = User.Identity.GetUserId();
        var currentCategory = CategoriesService.GetCategory(category.Id, currentUserId);
        if (currentCategory != null)
        {
            currentCategory.Name = category.Name;
            CategoriesService.SaveCategory();
        }
        else
        {
            Category toAdd = new Category();
            toAdd.Name = category.Name;
            toAdd.Owner = ApplicationUsersService.GetUser(currentUserId);
            CategoriesService.SaveCategory(toAdd);
        }
        return this.PartialView("_CategoriesListPartial", CategoriesService.GetCategories(currentUserId));
    }

这是我用来将数据保存到数据库的服务

    public void SaveCategory()
    {
        Context.SaveChanges();
    }

    public void SaveCategory(Category category)
    {
        Context.Categories.Add(category);
        Context.SaveChanges();
    }

如果我正在使用currentCategory != null更新模型,一切正常,但在另一个模型中,模型不会保存在数据库中。

与其他服务类类似的问题

这很好用

public ActionResult Index()
    {
        string currentUserId = User.Identity.GetUserId();
        CategoryViewModel categoriesViewModel = new CategoryViewModel();
        categoriesViewModel.Categories = CategoriesService.GetCategories(currentUserId);
        return View(categoriesViewModel);
    }

服务

        public ICollection<Category> GetCategories(string userId)
    {
        return this.Context.Categories.Where(c => c.Owner.Id == userId && c.IsDeleted == false).OrderBy(c => c.Name).ToList();
    }

这根本不起作用

public ActionResult Index()
    {
        string currentUserId = User.Identity.GetUserId();
        BooksViewModel booksViewModel = new BooksViewModel();
        booksViewModel.Book = new Book();
        booksViewModel.Books = BooksService.GetBooks(currentUserId);
        return View(booksViewModel);
    }

服务

public ICollection<Book> GetBooks(string userId)
    {
        return this.Context.Books.Where(b => b.Owner.Id == userId && b.IsDeleted == false).OrderBy(b => b.Name).ToList();
    }

请帮忙

1 个答案:

答案 0 :(得分:0)

在没有看到GetCategory() 原地的情况下,这里还不够。但是,我会冒险:GetCategory()中使用的上下文实例SaveCategory()中使用的实例不同。