简单的插入通过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

回到顶部