Silverlight/Tips

WCF RIA Service에서 DomainService에 기본 Method 4종을 추가하는 Code Snippet

길버트리 2010. 2. 4. 19:43
실버라이트 개발자 여러분 안녕하세요!
DomainService를 만들어서 잘 사용하고 있다보면 신규 테이블을 추가하게 되는 순간이 있습니다.

그러면 ADO.NET Entity Data Model (*.edbx)을 Update Model from Database하는 것만으로
Proxy Class는 생성은 성공입니다.

하지만! 이미 사용하고 있던 DomainService에 새 테이블에 대한 기본 CRUD 메서드들은
손쉽게 추가해 줄 방법은 없습니다.

기본 CRUD 메서드
public IQueryable<Something> GetSomethings()
public void InsertSomething(Something something)
public void UpdateSomething(Something currentSomething)
public void DeleteSomething(Something something)

그래서 새 Domain Service를 만들어서 사용하거나,
새 Domain Service를 만들어서 생긴 4가지 기본 메서드를 기존 Domain Service로
Copy & Paste하는 방법으로 가게됩니다. 하지만 귀찮죠.

그래서 손쉽게 사용할 수 있는 Code Snippet을 하나 만들어 보았습니다.
Shortcut은 dsm이니 활용하세요.

Usage : dsm [tab] [tab]


Download



Example

        public IQueryable GetSomethings()
        {
            return this.ObjectContext.Something;
        }

        public void InsertSomething(Something something)
        {
            if ((something.EntityState != EntityState.Added))
            {
                if ((something.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.ChangeObjectState(something, EntityState.Added);
                }
                else
                {
                    this.ObjectContext.AddToSomething(something);
                }
            }
        }

        public void UpdateSomething(Something currentSomething)
        {
            if ((currentSomething.EntityState == EntityState.Detached))
            {
                this.ObjectContext.AttachAsModified(currentSomething, this.ChangeSet.GetOriginal(currentSomething));
            }
        }

        public void DeleteSomething(Something something)
        {
            if ((something.EntityState == EntityState.Detached))
            {
                this.ObjectContext.Attach(something);
            }
            this.ObjectContext.DeleteObject(something);
        }