通过asp MVC3 EntityFramework简单插入

Hil*_*lmi 1 asp.net entity-framework asp.net-mvc-3

我有两个简单的模型,有一对多的关系

public class X{
  public int id {get;set;}
  public virtual Y y{ get; set; }
  public string description{get;set;}
}
public class Y{
  public int id{get;set;}
  public string name{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

从实体框架我设置了关系

我正在尝试提交一个创建X具有现有Y价值的新记录的表单

从表单返回到动作的数据是string descriptiony_id.

当我尝试从参数指定对象时的操作

public ActionResult sth(X x){}
Run Code Online (Sandbox Code Playgroud)

x.y被设置为null(预计...),而当我尝试以下...

x.y = (from i in Y where i.id == that_id select i).first(); 
...
db.saveChanges();
Run Code Online (Sandbox Code Playgroud)

实体框架将新Y记录插入数据库......

我知道我做错了什么......你的帮助将非常感激!

dor*_*e01 5

查看代码,您有x和y的ID,x中的虚拟Y. 除了x中的虚拟Y,您还需要引用y的id.与y中的x的虚拟ICollection一起.

public class X{
  public int x_id {get;set;}
  public int y_id {get;set}
  public virtual Y y{ get; set; }
  public string description{get;set;}
}
public class Y{
  public int y_id{get;set;}
  public string name{get;set;}
  public virtual ICollection<X> X {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

这有助于实体关系.您可能还希望将y(s)列表传递给负责表单的控制器,除非您已经从表单上的下拉列表中选择了y值.