2010-07-31 3 views
3

linq-to-sql을 사용하여 데이터베이스에 연결하는 간단한 winforms 응용 프로그램이 있습니다.linform-to-sql이있는 Winforms의 CRUD

나는 데이터베이스에서 직접 클래스를 생성했으며, 필자는 datacontext를 래핑하는 DataAccess 클래스를 사용하여 필요한 모든 것을 제공 할 수있다.

나는, (EmployeeView를 호출 할 수 있습니다)

뷰로드 기존 행의 모든 ​​DataGridView를 내 엔티티에 관한 관련 텍스트 필드, 등의 세트를 채우는 오브젝트 데이터 소스를 사용하는 전망을 그리드를 클릭하면 필드가 적절히 업데이트됩니다.

필드를 변경하면 변경 내용이 레코드 변경을 통해 유지되지만 데이터 액세스 계층을 통해 변경 내용을 저장하는 방법을 모르겠습니다. 더럽고 저장해야하는 레코드를 어떻게 찾을 수 있습니까? 어떻게 저장합니까? 새 레코드를 추가하는 가장 좋은 방법은 무엇입니까? 레코드를 삭제 하시겠습니까?

나는 많은 리소스를 온라인에서 찾을 수 있지만 필요한 예제는 제공하지 않습니다. 누구나 기본 패턴 중 일부를 도와 주거나 좋은 곳을 알려줄 수 있습니까?

답변

5

LINQ-to-SQL 클래스를 사용하는 가장 기본적인 방법은 (잠재적으로) 편집하려는 Employees를 포함하기 위해 LINQ-to-SQL 클래스 목록을 인스턴스화하는 것입니다 (예를 들어 Employee를 사용하십시오). 해당 Employee 객체의 속성이 변경되면 객체는 자동으로 "dirtied"되고 DataContext.SubmitChanges()를 호출하면 객체가 지속됩니다.

List<Employee> employees = (from e in dataContext.Employees where e.Salary > 50000 select e).toList(); 

foreach(var employee in employees) 
{ 
    employee.CanAffordToyotaPrius = true; 
} 

dataContext.SubmitChanges(); 

당신이 DataContext를 포장 만 DataGridView를 가진 래퍼 개체의 속성을 변경하는 경우에 그 변경 아래로 거품 몇 가지 방법이 필요합니다 당신이 때 사용 LINQ - 투 - SQL 객체를 기본 데이터를 선택했습니다. 예를 들어 래퍼의 속성에 setter를 사용하여 기본 LtS 객체의 속성을 설정할 수도 있습니다.

+0

부울 속성 중 내 선택을 거짓으로 생각할 수도 있습니다 ...하지만 환경 친화적 인 선택입니다. ;) –

+0

datacontext에서 가져온 객체를 사용하고 있으므로이 솔루션이 잘 작동하는 것 같습니다. 추가하고 삭제하는 것은 어떨까요? – captncraig

+0

확실히 Linq-to-SQL을 사용하는 CRUD에 대한 MSDN의 기사를 살펴보십시오. http://msdn.microsoft.com/en-us/library/bb386931.aspx 기본적으로 LtS 개체를 조작하는 것이 전부입니다. LtS 테이블 (예 :'dataContext.Employees.InsertOnSubmit (new Employee() {...})')에 대해'InsertOnSubmit (Employee e)'또는'DeleteOnSubmit (Employee e)'와 같은 메소드를 사용할 수있다. LINQ를 통해 검색 한 Employee 컬렉션에서 Employee를 추가/제거 할 수 있습니다. –