- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有更多的理论问题。如果有人能给我提供一个链接来回答我也会很高兴,我只是不知道如何在互联网上查找它,所以我还没有找到答案。
假设我有一个类应该检查数据库中是否没有损坏的数据。所以我用正常方法等,用
using (var databaseContext = new ExambleDBEntities())
此方法的目的是检查是否存在损坏的数据 - 如果存在,则修复它。但这不是代码本身的问题,所以请原谅我没有给出任何代码。它是关于...我可以用数据库中的数据做什么。
所以我已经连接到数据库,设置了数据库上下文,完成了查询,我的第一个日期是“TableName dataSample”。
主要问题是:
我可以将此“dataSample”发送到同一函数内的其他方法,在那里它将被更改,然后在主方法中保存更改吗?
ObjectContext
是否跟踪从数据库中获取的内容并记住要保存的内容,或者它必须位于 using 指令下的相同方法中?
我认为我写的不够清楚,所以也许我会写一些示例代码:
void MainMethod()
{
using (var databaseContext = new ExambleDBEntities())
{
var DatabaseQuery = from... select... ;
TableName dataSample = DatabaseQuery.First();
dataSample = CorrectMistakes(dataSample);
databaseContext.SaveChanges();
}
}
TableName CorrectMistakes(TableName sample)
{
if (somethingWrong)
sample.money = 0;
return sample;
}
我应该返回更改后的对象还是可以在其他方法中进行编辑?
抱歉有任何错误,我很难用英语解释这一点。
感谢您的帮助,这里是我使用的东西,以防有人需要:Visual Studio 2012、.NET Framework 4.5、MySQL Connector 6.9.4、MySQL for VS 1.2.3。
最佳答案
是的,你可以做到。抱歉,我没有给您的链接,但我刚刚进行了测试以确保它有效。对您来说,测试它以确认它是否有效应该不会太困难。
由于您在 using
指令内调用 CorrectMistake()
,因此它对 TableName
对象所做的任何更改都将保留在当前上下文中并在调用 SaveChanges()
时保存。
我可以将此“dataSample”发送到同一函数内的其他方法,在其中对其进行更改,然后在主方法中保存更改吗?
是的,可以。尝试一下!
ObjectContext 是否跟踪从数据库中获取的内容并记住要保存的内容,或者它必须位于 using 指令下的相同方法中?
是和否。当您处于 using
指令中时,它会“记住”。只要工作是在 using
block 中完成的,哪个方法正在执行工作并不重要。
我应该返回更改的对象还是可以在其他方法中进行编辑?
没关系,都可以。做最适合您情况的事情。如果您只是更改对象的属性之一,那么在方法内部进行编辑可能更有意义。
考虑这个简单的例子:
private void ChangeObject(object obj)
{
if (something)
obj.Name = "New name";
}
using (var db = new Context())
{
var obj = db.Objects.First();
ChangeObject(obj);
db.SaveChanges();
}
这相当于:
using (var db = new Context())
{
var obj = db.Objects.First();
if (something)
obj.Name = "New name";
db.SaveChanges();
}
关于c# - Entity Framework ObjectContext.SaveChanges() 和类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976681/
首先,让我自己对必须维护 VB5 代码做出强制性的尖刻评论:是的,这很可怜,但我们可以切入正题吗?谢谢。 我不得不重新审视一些在 1998 年编写并且自 2003 年以来没有被触及的非常旧的代码。我遇
我想在 EntityFrameWork 6 中使用脚手架,但得到这个: Unable to retrieve metadata for '[myNameSpace].Models.prod'. Una
为什么我打不通DbContext.ObjectContext直接地?我可以做到((IObjectContextAdapter)context).ObjectContext 我认为内部机制是这样的接口(
我们在控制台应用程序中运行一个非常简单的函数,该函数循环遍历数据库并将表列到变量中。当然,最初它做的更多,但我们将其简化为仅列出 1 个表。 我们注意到,每次创建新的 ObjectContext 时,
我在我的应用程序中定义了三个数据模型。我的问题是,如果我需要三种不同的上下文?那么三个不同的 sqlite 文件? 目前,每次我将一条记录保存到我的数据库中时,我都会执行以下操作: managedOb
这里只是一个快速的完整性检查! 如果我在实例类中有一个静态方法,例如: public class myClass { public static void AMethod() {
我在使用 EntityFramework 4.0 创建关系时出错 对数据库的更改已成功提交,但更新对象上下文时出错。 ObjectContext 可能处于不一致状态。 内部异常消息:无法检索关系“Co
我按照此处描述的方式使用 Entity Framework : Entity framework uses a lot of memory 我意识到我需要使用“using”语句才能正常工作。当我在做的
我已经使用内存分析器对此进行了检查,没有真正的实体保留在内存中但是哈希集、字典和 EntityKey 对象——但我找不到如何断开这些引用的方法。 如此简单的问题:如何阻止上下文(或其 ObjectSt
我正在创建一个委托(delegate)来检索数据库中的所有专辑记录。我在另一个项目中使用了同样的方法,但由于某种原因,这次我遇到了错误。 我错过了一步吗?我不确定为什么会出现此错误。 代码
如何更新数据存储中的所有脏实体,并将其更改的值重置为原始存储值? 方法ObjectContext.Refresh需要将要刷新的实体作为参数。 最佳答案 以下通常有效: Context.Refresh(
有没有办法保存单个跟踪对象的更改,而不是 ObjectStateManager 中的所有对象,我的意思是: ObjectContext.SaveChanges(Contact) 最佳答案 也许您可以创
我在这里做错了什么? ... using (var ctx = ObjectContextManager.GetManager("MyDataContext")) { var idsToUpd
我有一个用 php 编写的宠物项目。我的代码所做的工作之一是加载一堆 csv 文件并将它们写入具有自动生成的主键和多部分唯一键的 MySQL 表。我无法控制和检查是否已处理某些文件的方法,因此唯一 k
我使用不同的命令和不同的参数多次调用 ObjectContext.ExecuteStoreCommand,尽管我对几个命令使用相同的参数列表(对象)。我收到以下异常: System.ArgumentE
我正在使用为每个请求创建一个 ObjectContext 的概念。从技术上讲,我将 ObjectContext 实例添加到 HttpContext.Current.Items。但我不知道如何正确地杀死
我已经看到这个问题被问了一百万次,但我遇到的每一个建议似乎都已经涵盖了。 我的 MVC 解决方案中有 Entity Framework ,我有一个“存储库”,它试图检索 MyObject 的集合: p
我不太确定 Dispose 我的 ObjectContext 的正确方法是什么。这是我的设置方式: public abstract class DataManagerBase where T:Obje
我正在尝试将大量行(>10,000,000)插入 MySQL使用 EF ObjectContext(数据库优先)的数据库。看完this question的回答后我编写了这段代码(批量保存)来插入大约
我尝试在 MVC4 中级联下拉列表。我有 2 个下拉列表 1 - 类别2 - 子类别。 当用户创建新产品时,他需要选择类别,然后选择与该类别相关的子类别。我将 ajax 与杰森一起使用。 publi
我是一名优秀的程序员,十分优秀!