我有更多的理论问题。如果有人能给我一个回答的链接,我会很高兴我也不知道如何在互联网上查找,所以我没有找到答案。
假设我有一个类应该检查数据库中是否没有损坏的数据。所以我用普通方法等,用
using (var databaseContext = new ExambleDBEntities())
此方法的目的是检查是否存在损坏的数据 - 如果有,则进行修复。但这不是代码本身的问题,所以请原谅我不给任何代码。它是关于......我可以用数据库中的数据做什么。
所以我连接到数据库,设置数据库上下文,查询完成,我的第一个日期让我们说“TableName dataSample”。
主要问题是:
我可以将这个“dataSample”发送到同一个函数中的其他方法,在那里它会被更改,然后在main方法中保存更改吗?
ObjectContext
是否跟踪从数据库中获取的内容并记住要保存的内容,或者它必须在使用指令的同一方法中?
我认为我写的内容不够明确,所以也许我会写一些示例代码:
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。
答案 0 :(得分:0)
是的,你可以这样做。对不起,我没有为您提供链接,但我只是进行了测试以确定它是否有效。您也不应该对此进行测试以确认其有效。
因为您在CorrectMistake()
指令中调用using
,所以对TableName
对象所做的任何更改都将保留在当前上下文中,并在您调用SaveChanges()
时保存
我可以发送这个" dataSample"其他方法是否具有相同的功能,它将被更改,然后保存主方法中的更改?
是的,你可以。试试吧!
Do ObjectContext是否跟踪从数据库中获取的内容并记住要保存的内容,或者它必须在使用指令的同一方法中?
是和否。它记得"当你在using
指令。只要在using
块中完成工作,对于哪种方法正在进行工作并不重要。
我应该返回更改的对象,还是可以在其他方法中编辑?
没关系,要么都行不通。做任何最适合你情况的事情。如果您只是对对象的某个属性进行了更改,那么在方法内部进行编辑可能更有意义。
考虑这个简单的例子:
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();
}