繁体   English   中英

使用ASP.NET MVC5在C#中将主键包含为类的属性时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM