我正在使用一个使用Web服务的应用程序,并通过EF4将数据直接推送到SQL Server 2008数据库。我需要打破从WS中提取数据,更新SQL中的记录以及删除WS中不再存在的SQL中的记录的过程,因为WS本身有时会非常不稳定,并且它被证明更简单,更容易如果我使用单独的方法处理重试某些步骤而不是试图将它们全部塞入单个方法中,则进行故障排除。
我的问题是:当我创建模型的一个实例(MyEntities context = new MyEntities())时,我可以将它传递给其他方法,以便避免两个不同实例尝试在不同时更新数据库的问题并互相覆盖?如果答案是肯定的,我应该怎么做?
我在想我应该将它作为参数添加到ref关键字,la:
MyEntities context = new MyEntities();
CallSomeOtherMethod(ref context, otherinfo);
internal static void CallSomeOtherMethod(ref MyEntities entity, String[] otherinfo)
{
entity.DoSomething();
...
思想?
答案 0 :(得分:1)
首先,不需要ref
,只有当您计划将上下文替换为方法中的另一个上下文时,才需要这样做。
其次,在课堂层面思考,你处于面向对象的世界。这意味着您不会将db上下文传递给单个方法,而是传递给具有特定责任的类。
public class SomeService
{
private DbContext _context;
public SomeService ( DbContext ctx )
{
this._context = ctx;
...
}
// now, context is available for all methods inside the class
然后
// pass existing context
SomeService service = new SomeService( context );