Chr*_*ens 5 c# entity-framework asp.net-mvc-4
所有这一切的新功能:我有一个具有UserProfile属性的Character模型,因此可以将一个字符与UserProfile条目联系起来.这将使UserProfile成为Character的外键.
人物模型:
public class Character
{
public int ID { get; set; }
public virtual UserProfile user { get; set; }
public string name { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
(我将UserProfile属性设为虚拟因为另一个帖子,不确定是否应该保留)
在创建新字符时,我想将该字符的用户属性设置为发出请求的当前Web用户的对象.例如,以下是用户制作角色的过程:登录/创建带网站的用户帐户点击"创建角色"
[HttpPost]
public ActionResult Create(Character character)
{
if (ModelState.IsValid)
{
character.user = ???
db.Characters.Add(character);
db.SaveChanges();
...
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何从我的控制器访问UserProfile表.通常,为了访问表,我创建了dbContext的对象,但UserProfile表使用默认的MVC 4上下文,而我的应用程序的所有其他对象都使用不同的dbContext.
我猜我有几个解决方案,我都无法弄明白该怎么做:
如果我的任何术语已关闭或者我遗漏了重要信息,请提前抱歉.我会根据需要提供更多.谢谢
当您登录用户信息时,如UserId或UserName将被存储
WebSecurity.CurrentUserId
WebSecurity.CurrentUserName
[HttpPost]
public ActionResult Create(Character character)
{
if (ModelState.IsValid)
{
character.user = db.UserProfiles.Find(u => u.UserID = WebSecurity.CurrentUserId);
db.Characters.Add(character);
db.SaveChanges();
...
}
Run Code Online (Sandbox Code Playgroud)
我通常将当前用户 ID 保存在会话变量中,然后在需要时从数据库中检索该用户。所以代码可能看起来像这样:
[HttpPost]
public ActionResult Create(Character character)
{
if (ModelState.IsValid)
{
character.user = db.UserProfiles.Find(u => u.UserID = (int) Session["UserID"]);
db.Characters.Add(character);
db.SaveChanges();
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4918 次 |
| 最近记录: |