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网站
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类存在于一个完全不同的名称空间中,因此如果我有任何问题,我将只引用完全限定的名称空间。是的,我知道,但这只是一个痛苦。