2013-12-12 3 views
0

저는 응용 프로그램에서 웹 서비스를 사용하고 EF4를 통해 SQL Server 2008 데이터베이스로 직접 데이터를 푸시합니다. WS에서 데이터를 가져오고, SQL에서 레코드를 업데이트하고, WS에 더 이상 존재하지 않는 SQL에서 레코드를 삭제하는 프로세스를 중단해야합니다. WS 자체가 때로는 꽤 흐릿해질 수 있기 때문에 더 간단하고 쉽습니다. 별도의 메서드를 사용하여 특정 단계를 다시 시도하여 단일 메서드로 모두 채우는 경우보다 문제를 해결할 수 있습니다.Entity Framework : 메서드에서 모델의 동일한 인스턴스를 사용합니까?

내 질문은 : 모델 (MyEntities context = new MyEntities())의 인스턴스를 만들 때 다른 방법으로 전달하여 다른 두 인스턴스에서 데이터베이스를 업데이트하려고 할 때 문제를 피할 수 있습니까? 서로 다른 덮어 쓰기? 대답이 '예'라면 어떻게해야합니까?

나는 라, 내가 심판 키워드 인수로 추가해야한다고 생각 해요 :

MyEntities context = new MyEntities(); 
CallSomeOtherMethod(ref context, otherinfo); 

internal static void CallSomeOtherMethod(ref MyEntities entity, String[] otherinfo) 
{ 
    entity.DoSomething(); 
... 

생각을?

답변

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);