Entity Framework ObjectContext.SaveChanges() 和 class 方法
Entity Framework ObjectContext.SaveChanges() and class methods
我有更多的理论问题。如果有人能给我一个 link 的答案,我也会很高兴。我只是不知道如何在互联网上查找,所以我没有找到答案。
假设我有一个 class 应该检查数据库中是否没有损坏的数据。所以我用普通方法等
using (var databaseContext = new ExambleDBEntities())
此方法的目的是检查是否有损坏的数据 - 如果有,则进行修复。但这不是代码本身的问题,所以请原谅我没有给出任何代码。它是关于...我可以用数据库中的数据做什么。
所以我已经连接到数据库,设置了数据库上下文,完成了查询,我的第一次约会是在"TableName dataSample"。
主要问题是:
我可以将此 "dataSample" 发送到同一函数内的其他方法,在那里它会被更改,然后将更改保存在 main 方法中吗?
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;
}
我应该 return 更改对象还是可以在其他方法中编辑?
对于任何错误,我深表歉意,我真的很难用英语解释。
感谢您的帮助,以下是我在任何人需要时使用的东西:Visual Studio 2012,.NET Framework 4.5,MySQL Connector 6.9.4,MySQL for VS 1.2.3.
是的,你可以做到。抱歉,我没有 link 给你,但我只是 运行 进行了测试以确保它有效。测试它以确认它是否有效对您来说应该不会太困难。
因为您在 using
指令中调用 CorrectMistake()
,它对 TableName
对象所做的任何更改都将保留在当前上下文中,并在您调用 [=15] 时保存=].
我能否将此 "dataSample" 发送到同一函数旁边的其他方法,在其中进行更改,然后在 main 方法中保存更改?
是的,你可以。试试吧!
ObjectContext 是否跟踪从数据库中获取的内容并记住要保存的内容,或者它必须在相同的方法中,在 using 指令下?
是也不是。它 "remembers" 当你在 using
指令中时。只要在 using
块中完成工作,哪种方法正在执行工作并不重要。
我应该 return 更改对象还是可以在其他方法中编辑?
没关系,两者都行。做最适合您情况的事情。如果您只是更改对象的其中一个属性,那么在方法内部进行编辑可能更有意义。
考虑这个简单的例子:
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();
}
我有更多的理论问题。如果有人能给我一个 link 的答案,我也会很高兴。我只是不知道如何在互联网上查找,所以我没有找到答案。
假设我有一个 class 应该检查数据库中是否没有损坏的数据。所以我用普通方法等
using (var databaseContext = new ExambleDBEntities())
此方法的目的是检查是否有损坏的数据 - 如果有,则进行修复。但这不是代码本身的问题,所以请原谅我没有给出任何代码。它是关于...我可以用数据库中的数据做什么。
所以我已经连接到数据库,设置了数据库上下文,完成了查询,我的第一次约会是在"TableName dataSample"。
主要问题是:
我可以将此 "dataSample" 发送到同一函数内的其他方法,在那里它会被更改,然后将更改保存在 main 方法中吗?
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;
}
我应该 return 更改对象还是可以在其他方法中编辑?
对于任何错误,我深表歉意,我真的很难用英语解释。
感谢您的帮助,以下是我在任何人需要时使用的东西:Visual Studio 2012,.NET Framework 4.5,MySQL Connector 6.9.4,MySQL for VS 1.2.3.
是的,你可以做到。抱歉,我没有 link 给你,但我只是 运行 进行了测试以确保它有效。测试它以确认它是否有效对您来说应该不会太困难。
因为您在 using
指令中调用 CorrectMistake()
,它对 TableName
对象所做的任何更改都将保留在当前上下文中,并在您调用 [=15] 时保存=].
我能否将此 "dataSample" 发送到同一函数旁边的其他方法,在其中进行更改,然后在 main 方法中保存更改?
是的,你可以。试试吧!
ObjectContext 是否跟踪从数据库中获取的内容并记住要保存的内容,或者它必须在相同的方法中,在 using 指令下?
是也不是。它 "remembers" 当你在 using
指令中时。只要在 using
块中完成工作,哪种方法正在执行工作并不重要。
我应该 return 更改对象还是可以在其他方法中编辑?
没关系,两者都行。做最适合您情况的事情。如果您只是更改对象的其中一个属性,那么在方法内部进行编辑可能更有意义。
考虑这个简单的例子:
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();
}