C# MVC到数据层到dbcontext

C# MVC到数据层到dbcontext,c#,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我的解决方案包含以下项目: Logan.Web.DBContext这是定义表的DBContext以及关系等的地方 Logan.Web.DBObjects这是为表定义类的地方。这些属性包含将在应用程序中使用的属性 Logan.Web.Data这是MVC应用程序将用于与上述对象交互的数据层 LoganMVC实际的MVC网站 我从涉及用户记录的CRUD操作的逻辑开始,因此我已经编写了以下代码: DB上下文 namespace Logan.Web.DBContext { public cla

我的解决方案包含以下项目:

  • Logan.Web.DBContext这是定义表的DBContext以及关系等的地方
  • Logan.Web.DBObjects这是为表定义类的地方。这些属性包含将在应用程序中使用的属性
  • Logan.Web.Data这是MVC应用程序将用于与上述对象交互的数据层
  • LoganMVC实际的MVC网站
我从涉及用户记录的CRUD操作的逻辑开始,因此我已经编写了以下代码:

DB上下文

namespace Logan.Web.DBContext
{
    public class UserDBContext : LoganDBBaseObject<User>
    {
        private static WebDBContext db = new WebDBContext();

        public UserDBContext()
            : base()
        {
            Property(p => p.Username)
                .HasColumnName("sUsername")
                .HasMaxLength(20)
                .IsRequired();

            Property(p => p.EmailAddress)
                .HasColumnName("sEmailAddress")
                .HasMaxLength(200)
                .IsRequired();

            Property(p => p.Password)
                .HasColumnName("sPassword")
                .HasMaxLength(255)
                .IsRequired();

            Property(p => p.Biography)
                .HasColumnName("sBiography")
                .HasColumnType("text");

            HasRequired(r => r.Role)
                .WithMany(m => m.Users)
                .Map(x => x.MapKey("fkRoleID"))
                .WillCascadeOnDelete(false);

            ToTable("Users");

        }
    }
}
namespace Logan.Web.Objects
{
    public class User : LoganBaseObject<User>
    {
        public string Username { get; set; }
        public string EmailAddress { get; set; }
        public string Password { get; set; }
        public string Biography { get; set; }
        public virtual Role Role { get; set; }


        public virtual ICollection<Article> Articles { get; set; }

        public User()
        {
            Username = String.Empty;
            EmailAddress = String.Empty;
            Password = String.Empty;
            Biography = String.Empty;
            Articles = new List<Article>();
        }
    }
}
namespace Logan.Web.Data
{
    public class WebUser
    {
        WebDBContext db = new WebDBContext();

        public List<User> GetUsers()
        {
            return db.Users.Include(x => x.Role).ToList();
        }
}
namespace Logan.Web.DBContext
{
公共类UserDBContext:LoganDBBaseObject
{
私有静态WebDBContext db=new WebDBContext();
公共UserDBContext()
:base()
{
属性(p=>p.Username)
.HasColumnName(“苏瑟南”)
.HasMaxLength(20)
.IsRequired();
属性(p=>p.EmailAddress)
.HasColumnName(“语义地址”)
.HasMaxLength(200)
.IsRequired();
属性(p=>p.Password)
.HasColumnName(“sPassword”)
.HasMaxLength(255)
.IsRequired();
属性(p=>p.1)
.HasColumnName(“sBiography”)
.HasColumnType(“文本”);
HasRequired(r=>r.Role)
.WithMany(m=>m.Users)
.Map(x=>x.MapKey(“fkRoleID”))
.WillCascadeOnDelete(假);
ToTable(“用户”);
}
}
}
类别定义

namespace Logan.Web.DBContext
{
    public class UserDBContext : LoganDBBaseObject<User>
    {
        private static WebDBContext db = new WebDBContext();

        public UserDBContext()
            : base()
        {
            Property(p => p.Username)
                .HasColumnName("sUsername")
                .HasMaxLength(20)
                .IsRequired();

            Property(p => p.EmailAddress)
                .HasColumnName("sEmailAddress")
                .HasMaxLength(200)
                .IsRequired();

            Property(p => p.Password)
                .HasColumnName("sPassword")
                .HasMaxLength(255)
                .IsRequired();

            Property(p => p.Biography)
                .HasColumnName("sBiography")
                .HasColumnType("text");

            HasRequired(r => r.Role)
                .WithMany(m => m.Users)
                .Map(x => x.MapKey("fkRoleID"))
                .WillCascadeOnDelete(false);

            ToTable("Users");

        }
    }
}
namespace Logan.Web.Objects
{
    public class User : LoganBaseObject<User>
    {
        public string Username { get; set; }
        public string EmailAddress { get; set; }
        public string Password { get; set; }
        public string Biography { get; set; }
        public virtual Role Role { get; set; }


        public virtual ICollection<Article> Articles { get; set; }

        public User()
        {
            Username = String.Empty;
            EmailAddress = String.Empty;
            Password = String.Empty;
            Biography = String.Empty;
            Articles = new List<Article>();
        }
    }
}
namespace Logan.Web.Data
{
    public class WebUser
    {
        WebDBContext db = new WebDBContext();

        public List<User> GetUsers()
        {
            return db.Users.Include(x => x.Role).ToList();
        }
}
名称空间Logan.Web.Objects
{
公共类用户:LoganBaseObject
{
公共字符串用户名{get;set;}
公共字符串电子邮件地址{get;set;}
公共字符串密码{get;set;}
公共字符串{get;set;}
公共虚拟角色{get;set;}
公共虚拟ICollection项目{get;set;}
公共用户()
{
Username=String.Empty;
EmailAddress=String.Empty;
Password=String.Empty;
传记=String.Empty;
文章=新列表();
}
}
}
积垢功能

namespace Logan.Web.DBContext
{
    public class UserDBContext : LoganDBBaseObject<User>
    {
        private static WebDBContext db = new WebDBContext();

        public UserDBContext()
            : base()
        {
            Property(p => p.Username)
                .HasColumnName("sUsername")
                .HasMaxLength(20)
                .IsRequired();

            Property(p => p.EmailAddress)
                .HasColumnName("sEmailAddress")
                .HasMaxLength(200)
                .IsRequired();

            Property(p => p.Password)
                .HasColumnName("sPassword")
                .HasMaxLength(255)
                .IsRequired();

            Property(p => p.Biography)
                .HasColumnName("sBiography")
                .HasColumnType("text");

            HasRequired(r => r.Role)
                .WithMany(m => m.Users)
                .Map(x => x.MapKey("fkRoleID"))
                .WillCascadeOnDelete(false);

            ToTable("Users");

        }
    }
}
namespace Logan.Web.Objects
{
    public class User : LoganBaseObject<User>
    {
        public string Username { get; set; }
        public string EmailAddress { get; set; }
        public string Password { get; set; }
        public string Biography { get; set; }
        public virtual Role Role { get; set; }


        public virtual ICollection<Article> Articles { get; set; }

        public User()
        {
            Username = String.Empty;
            EmailAddress = String.Empty;
            Password = String.Empty;
            Biography = String.Empty;
            Articles = new List<Article>();
        }
    }
}
namespace Logan.Web.Data
{
    public class WebUser
    {
        WebDBContext db = new WebDBContext();

        public List<User> GetUsers()
        {
            return db.Users.Include(x => x.Role).ToList();
        }
}
namespace Logan.Web.Data
{
公共类WebUser
{
WebDBContext db=新的WebDBContext();
公共列表GetUsers()
{
返回db.Users.Include(x=>x.Role.ToList();
}
}
我在尝试将此代码绑定到MVC时遇到了问题。我知道我可能会在模型中这样做,但我不知道这如何告诉视图什么是什么,以及如何告诉数据库当我想要操作数据时视图说了什么

到目前为止,我所能做的就是:

    // controller
    public ActionResult Index()
    {
        UserModel u = new UserModel();
        var users = u.GetUsers();

        return View(users);
    }

    // model
    public List<User> GetUsers()
    {
        WebUser u = new WebUser();
        return u.GetUsers();
    }
//控制器
公共行动结果索引()
{
UserModel u=新的UserModel();
var users=u.GetUsers();
返回视图(用户);
}
//模型
公共列表GetUsers()
{
WebUser u=新的WebUser();
返回u.GetUsers();
}
如何使用此结构创建写/更新/删除函数或通过其主键获取记录


提前感谢!

您需要更改WebUser类以包含这些操作的方法

你需要:

public User GetUser(string userName)

public User CreateUser(User user)

public User UpdateUser(User user)

public bool DeleteUser(string userName)

尽管如此,您可能会遇到命名类
User
的问题,因为它是由MVC框架保留的。

User类存在于一个完全不同的名称空间中,因此如果我有任何问题,我将只引用完全限定的名称空间。是的,我知道,但这只是一个痛苦。