[英]While Including Primary Keys as a property of my classes in C# using ASP.NET MVC5
如果我在类中提供主键属性,那么Entity Framework是否会隐式地迭代新创建的对象的值,还是必须提供代码来注册此信息? 对于某些人来说,这似乎很明显,为了公平起见,我在问这个问题之前没有研究过。
我需要知道的原因:
我需要从一个类中检索项目的SelectList,该类是另一个类的属性。 换句话说,这些类共享组成关系。
// GET: Fora/Create
public ActionResult Create()
{
ViewBag.Categories = new SelectList(db.Fora.OrderBy(m => m.MessageItem.TopicItem.Category), "TopicID", "Category");
ViewBag.UserNames = new SelectList(db.Fora.OrderBy(m => m.MessageItem.From.UserName), "MemberID", "UserName");
return View();
}
类:
public class ForumViewModel
{
public int MessageID { get; set; }
public Member User{ get; set; }
public Topic Category { get; set; }
public Message Message { get; set; }
}
public class Message
{
private List<Topic> categories = new List<Topic>();
public virtual int MessageID { get; set; }
public virtual int MemberID { get; set; }
public virtual int ForumID { get; set; }
public virtual int TopicID { get; set; }
public virtual string Subject { get; set; }
public virtual string Body { get; set; }
public virtual DateTime Date { get; set; }
public virtual Member From { get; set; }
public virtual Topic TopicItem { get; set; }
public virtual List<Topic> Categories
{
get { return categories; }
set { categories = value; }
}
}
在有人将我撕裂成班级结构之前,我只想说我是一名大学生,仍在尝试学习这些知识,并且出于绝望而使我的控制器的action create()
方法正常工作试图强迫它工作,也无济于事...
任何帮助或澄清表示赞赏。
如果您所谓的“隐式迭代新创建的对象的值”和“注册此信息”实际上是将新对象添加到数据库中并获得有关这些文件的EF更新,则需要采取以下步骤来首先创建一个新对象,将其添加到dbcontext,然后保存更改。 假设新对象的类型为Message
,
首先创建一个Message
:
var newMessage = new Message{ ... };
然后将其添加到您的dbcontext中:
db.Message.Add(newMessage);
(其中Message
是代表您的Message表的dbContext类)
最后保存您的更改:
db.SaveChanges();
如果您的数据库配置为自动增加Message表的主键值,那么在保存更改后,新的newMessage
对象将获得新的ID。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.