实体中的Fk关系

时间:2012-06-29 15:13:31

标签: asp.net-mvc asp.net-mvc-3 entity-framework linq-to-entities

我知道这是一个非常基本的问题。 我有两张桌子

项目 - ID,名称,TypeID ProjectType - ID,名称

在MVC中,我有一个控制器动作来创建一个新项目。在创建项目时,我在将项目类型传递给视图之前指定项目的类型,如下所示

//
        // GET: /Project/Create

        public ActionResult Create(string id= null)
        {

            ProjectType selprojtype = null;
            if (id != null)
            {
                selprojtype = db.ProjectTypes.Include("Projects").Single(p => p.Name == id);
          }

            Project project = new Project();
            project.ProjectType = selprojtype;
            //project.TypeID = selprojtype.ID;  -
            var model = new ProjectViewModel(project);
            PopulateDropDownLists(model);
            return View(model);
        } 

我的问题是,只执行以下操作才能关联ProjectType对象。

Project project = new Project();
 project.ProjectType = selprojtype;

项目中的TypeID仍为null。除非我这样做

 project.TypeID = selprojtype.ID;

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我不会将TypeID存储在Project类上,因为此值已经在ProjectType类上。如果您需要访问此值,可以这样执行:

project.ProjectType.ID

如果您需要直接从Project类访问ID,则可以创建传递属性。 E.g。

public class Project
{
    public ProjectType ProjectType { get; set; }
    public int TypeID
    {
        get { return ProjectType.ID; }
    }
}

答案 1 :(得分:0)

不::)

让ProjectViewModel()的构造函数从传入的Project实例中读取它,并通过从project.ProjectType中读取它来设置id .ProjectType