GMa*_*Man 2 .net linq linq-to-entities entity-framework
我在将以下内容保存到数据库时遇到问题.
我有一个分支列表作为MessageType对象的一部分.我更新代码的第1部分中的分支列表,然后在第2部分中将分支列表保存到MessageType对象,然后调用db.SaveChanges().不幸的是,新的分支列表没有持久化.
// section 1
List<Branch> myBranches = new List<Branch>();
foreach (int bid in branches)
{
var bran = db.Branches.Find(bid);
if (bran != null)
{
myBranches.Add(bran);
}
}
//section 2
try
{
messagetype.SenderID = eSenderDB.MvcApplication.SenderID;
messagetype.Branches = myBranches;
foreach (Branch bra in messagetype.Branches)
{
db.Entry(bra).State = EntityState.Modified;
db.SaveChanges();
}
//db.Entry(messagetype.Branches).State = EntityState.Modified;
db.Entry(messagetype).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我的Create方法
[HttpPost]
public ActionResult Create(MessageType messagetype, int[] branches)
{
List<Branch> myBranches = new List<Branch>();
foreach (int bid in branches)
{
var bran = db.Branches.Find(bid);
if (bran != null)
{
myBranches.Add(bran);
}
}
{
messagetype.Branches = myBranches;
messagetype.SenderID = eSenderDB.MvcApplication.SenderID;
messagetype.OptIns = 0;
db.MessageTypes.Add(messagetype);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(messagetype);
}
Run Code Online (Sandbox Code Playgroud)
您忘了将它们附加到上下文中.请尝试以下代码:
foreach (Branch bra in messagetype.Branches)
{
db.Branches.Attach(bra);
db.Entry(bra).State = EntityState.Modified;
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
在旁注中,我怀疑SaveChanges在你的foreach循环中有调用.你可以推迟保存到最后,它仍然可以正常工作.
| 归档时间: |
|
| 查看次数: |
2839 次 |
| 最近记录: |