在Visual Studio 2012中,我有Project#1,它使用EF 6在SQL DB中创建和更新条目。
另一个Project#2应该只选择从Project#1创建/更新的值
两个项目都有一个到本地数据库的连接字符串
两个项目都引用包含.edmx文件和生成的模型的数据访问层库。
http://localhost:1535/Project1:应该创建或编辑条目 付款实体
http://localhost:1896/Project2:应从付款中选择值 实体
问题是:当我在不同的localhost端口上运行这两个应用程序时,我能够创建一个条目并从另一个项目中选择它
但是当我想要更新条目时,我总是看到OLD值。只有当我在Visual Studio 2012中重建Project#2时,我才能看到更新后的值。
修改操作
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Prefix = "paymentform")] PaymentForm paymentform)
{
if (ModelState.IsValid)
{
Payment payment = db.Payments.Find(paymentform.formId);
payment.paymenturl = paymentform.paymenturl;
db.Entry(payment).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(new PaymentConfig());
}
发生了什么事?
答案 0 :(得分:0)
解决方案是避免使用初始化DB上下文的全局变量
以下是我之前在Project#2中所做的事情
public class PayController : Controller
{
Project2Entities db = new Project2Entities();
public ActionResult Index(int? id)
{
//select
}
}
解决方案是简单地使用using()和上下文。
public ActionResult Index(int? id)
{
using (var context = new Project2Entities())
{
//select here
}
}
我不知道为什么将上下文声明为全局变量无法正常工作。如果有人知道请澄清。