我有一个带有“Status”布尔值的付款模型,该布尔值默认为false。付款后,我需要将特定付款的“状态”更新为true。
这是我一直试图用来更改特定数据库条目的代码,但它并没有改变它。我做错了什么?
Payment payment = new Payment();
payment = db.Payments.Find(orderId);
db.Entry(payment).State = EntityState.Modified;
payment.Status = true;
db.SaveChanges();
谢谢
这就是最终起作用的原因:
using (var con = new ApplicationDbContext())
{
payment = con.Payments.First(x => x.Id == orderId);
payment.Status = true;
con.Payments.Attach(payment);
var entry = con.Entry(payment);
entry.Property(e => e.Status).IsModified = true;
con.SaveChanges();
}
如果你只有你的实体id,就像阿里·戈尔沙尼说的那样。但是,如果您已经拥有实体并且只想更新,则可以这样做:
public void Update(Payment payment, int orderId)
{
//first find the entity to update
Payment oldEntity = DbSet.Find(orderId);
//detach this entity from the DbSet
Db.Entry(oldEntity).State = EntityState.Detached;
//set the state from the entity that you just received to modified
Db.Entry(obj).State = EntityState.Modified;
}
分离避免了错误消息:“附加实体失败,因为另一个相同类型的实体已经具有相同的主键值”。
我希望它能有所帮助。
所有这些都失败的原因是,要么付款对象从未附加到DBContext,要么orderId实际上与Payments表上的PK不匹配。为了使SaveChanges()
真正起作用,您正在更改的对象需要由DBContext跟踪,而不仅仅是将其实体状态设置为“已修改”。此外,所有这些例子似乎都过于复杂。
using (var db = new DbContext())
{
// make sure you have the right column/variable used here
var payment = db.Payments.FirstOrDefault(x => x.Id == orderId);
if(payment == null) throw new Exception("Invalid id: " + orderId);
// this variable is tracked by the db context
payment.Status = true;
db.SaveChanges();
}
Payment payment = new Payment();
payment = db.Payments.Find(orderId);
payment.Status = true;
db.Entry(payment).State = EntityState.Modified;
db.SaveChanges();
问题内容: 在这些多重性冲突中,我所看到的大多数其他问题都是代码优先的,而我将DB作为第一位。我进行了一些模式更改,并且从数据库刷新模型时出现以下错误: 多重性与关系“ FK_MarketSelectionWager_Bet”中的角色“赌注”中的引用约束冲突。由于从属角色中的所有属性都是不可为空的,因此,主体角色的多重性必须为“ 1”。 我需要在SQL或模型中进行修复的任何指针都很棒。 以下是涉及
我曾想过简单地对数据库运行一个小命令并捕获任何异常,然而,如果出现问题(例如app.config丢失或数据库服务器关闭),应用程序将花费大量时间运行此代码,然后抛出异常(大约1分钟)。我想这是由于连接超时等,但我已经摆弄了这样的属性没有任何作用。 有没有人能提供任何关于去哪里的建议?
场景: 我有两个MySQL数据库: 大型主数据库 小型客户端数据库 示例表: 大数据库用户: 文本用户名 int id varchar登录 varchar密码 ...更多的领域 客户端数据库用户 内部id int UNIQUE api\u id(来自master的id) varchar登录 varchar密码 问题:我需要同步数据库,但我不知道如何以最佳方式进行同步。我读过这个问题,但它很老了,没
我想知道ehcache是否有办法检测数据库更新/插入(spring/java,hibernate web应用程序),并使用数据库中的当前(最新)数据刷新其缓存。如果没有,检测数据库更新的最佳方法是什么,以保持与缓存和数据库之间的数据同步?
下载url来自一个单独的图像选择方法,顺便说一句。我的用户创建代码是这样的。
我正在使用Spring框架配置一个简单的JPA应用程序。我的目标是在JUnit测试运行期间用数据填充db。我明白这并不理想。但我想要它有不同的用途。 下面是我的 test-context.xml