ASP.NET保存复杂的实体模型

Pan*_*xim 5 c# asp.net entity-framework

美好的一天,我是ASP.NET的新手,我无法弄清楚为什么我的代码不起作用.我有模特:

using System.ComponentModel.DataAnnotations;
using System.Drawing;
using System.Globalization;

namespace WebApp.Models
{
public class News
{
    public int NewsId { get; set; }
    public string title { get; set; }
    public string description { get; set; }
    public virtual Picture picture { get; set; }
    public int guid { get; set; }
}

public class Picture
{
    public int PictureId { get; set; }
    public byte[] image { get; set; }
    public int width { get; set; }
    public int height { get; set; }
    public int hash { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)

我正试图通过帖子形式创建新的"新闻":

    // POST: News/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(News news, HttpPostedFileBase uploadImage)
    {
        if (ModelState.IsValid && uploadImage != null)
        {
            byte[] imageData = null;
            using (var binaryReader = new BinaryReader(uploadImage.InputStream))
            {
                imageData = binaryReader.ReadBytes(uploadImage.ContentLength);
            }
            news.picture = new Picture()
            {
                hash = 0,
                image = imageData,
                width = 0,
                height = 0
            };
            db.News.Add(news);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(news);
    }
Run Code Online (Sandbox Code Playgroud)

但是当我从db检索数据时,我得到空指针异常:当我调用调试器时,我发现"news.picture"值为null.但在db.SaveChanges()之前它100%不为null.看起来我正在做一些愚蠢的错误,bcs我找不到有人遇到这个问题.谢谢.

Pan*_*xim 0

我不知道为什么,但是当我添加虚拟财产时,一切正常:

public virtual Picture picture { get; set; }
Run Code Online (Sandbox Code Playgroud)