ASP.NET MVC4 设置数据库上下文和模型

本文关键字:上下文 模型 数据库 设置 NET MVC4 ASP | 更新日期: 2023-09-27 18:37:10

我正在使用一个 ASP.NET 的MVC4项目(学校项目,所以我正在学习框架),试图从代码优先的角度获得工作实体框架6.0。我创建了我的模型(/Models/)和DbContext如下:

using System;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace Autokereskedes.Models
{
    public class AutoDb : DbContext
    {
        public DbSet<Car> Cars { get; set; }
        public DbSet<Reservation> Reservations { get; set; }
        public DbSet<Depo> Depos { get; set; }
        public DbSet<User> Users { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
            base.OnModelCreating(modelBuilder);
        }
    }
}

但是当我想在我的控制器中使用它时,我收到一个错误

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Autokereskedes.Models;
namespace Autokereskedes.Controllers
{
    public class AccountController : Controller
    {

......

private bool IsUserDataValid(string email, string password)
{
    bool r = false;
    var crypto = new SimpleCrypto.PBKDF2();
    using (var d = new AutoDb())
    {
        var user = new d.SystemUsers.FirstOrDefault( u => u.email == email);
        if (user != null && user.Password == crypto.Compute(password))
        {
            r = true;
        }
    }
    return r;
}

错误是:

Error   1   The type or namespace name 'd' could not be found (are you missing a using directive or an assembly reference?) C:'_temp'stackoverflow'Autokereskedes'Controllers'AccountController.cs  64  32  Autokereskedes
另外,我

无法真正开始使用模型,我认为我在对表关系进行编码时犯了错误(我的表大多具有一对多关联),但是当我使用模型时,我遇到了外键错误(HomeController)。

我的整个项目可在此处访问:下载

感谢您的时间和帮助,我在这里很迷茫,浏览教程但仍然错过了重点。

ASP.NET MVC4 设置数据库上下文和模型

我想应该是

var user = new d.Users.FirstOrDefault( u => u.email == email);

可以试试这个

 var user = d.Users.ToList().FirstOrDefault(u => u.Email == email);
.

NET 认为您正在尝试在命名空间 d.SystemUsers 中实例化一个名为 FirstOrDefault 的类,而您只是尝试引用您刚刚创建的 d 对象的 SystemUsers 属性。

因此,请尝试删除"新":

using (var d = new AutoDb())
{
    var user = d.SystemUsers.FirstOrDefault( u => u.email == email);
    if (user != null && user.Password == crypto.Compute(password))
    {
        r = true;
    }
}
相关文章: