简单的插入通过ASP MVC3的EntityFramework
我有两个简单的模型,有一个一对多的关系简单的插入通过ASP MVC3的EntityFramework
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;}
}
,并从实体框架,我设置
我试图提交创建表格的关系一个新的X
记录与现有的Y
值
从窗体返回的行为数据是string description
和。
的动作时,我尝试从
public ActionResult sth(X x){}
的x.y
设置为空(预计...),而当我试着下面的参数指定的对象...
x.y = (from i in Y where i.id == that_id select i).first(); ...
db.saveChanges();
实体框架插入一个新的Y
记录到数据库中...
我知道我做错了什么......你的帮助将是v非常感谢!
回答:
跟踪dbContext中的Y对象似乎是个问题。你如何生成你用linq查询的集合?你使用dbContext从数据库中获取它吗?或来自其他来源?
如果不是,您需要使用上下文或使用Attach()函数获取它,以便可以正确跟踪它。
另一个问题弹出。如何插入新的Y?你没有在数据库中定义主键吗?或者它试图插入然后引发异常?
这些是我对这件事的想法。
回答:
看着你的代码,你有一个X和Y的虚拟Y在X中的ID。随着这个虚拟Y在x中,你还需要一个对y的id的引用。随着x的y虚拟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;}
}
这有助于实体间的关系。您可能还想将y(s)列表传递给负责您表单的控制器,除非您已从表单的下拉列表中选择y值。
以上是 简单的插入通过ASP MVC3的EntityFramework 的全部内容, 来源链接: utcz.com/qa/262730.html