http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech
이번에는 간단한 예제를 같이 하면서 Linq를 이용한 CRUD(Create, Read, Update, Delete)를 해보도록 하겠습니다. EF와 Linq를 사용하여 시스템을 구성할 수 있는 시나리오는 여러가지가 있습니다. 그리고 때에 따라서는 Linq to SQL에 제약이 있을 수도 또는 없을 수도 있습니다. 하다보면 알 수 있는 내용들이지만 만약, 프로젝트에 처음 도입할 때는 이런 제약이나 문제들로 예기치 않게 일정 지연에 대한 조율이 필요할 수도 있습니다.
이제 앞의 강좌에서 생성한 Adventure Works의 EF를 가지고 예제를 진행할 뷰를 하나 추가합니다.
LinqView로 이름을 지정한 후 마침을 클릭하세요.
추가한 LinqView의 디자인 모드로 이동한 후 아래와 같이 컨트롤들을 배치합니다. 아래 디자인은 LayoutControl을 이용하여 구성했으며 오른쪽에 있는 Add, Remove버튼과 같이 컨트롤을 중앙에 배치하고 싶은 경우에는 [이곳]을 클릭하여 내용대로 진행하세요. Add, Remove를 더블 클릭하여 각각 이벤트 처리기를 등록합니다.
현재까지는 NG.Data.Entities 프로젝트만 EF가 설치되어 있으므로, LinqView를 추가한 프로젝트에서도 EF의 기능을 사용하기 위해 별도로 설치해야 합니다. 도구 > NuGet 패키지 관리자 > 솔루션 NuGet 패키지 관리...를 선택하세요.
관리를 클릭합니다.
설치하고자 하는 프로젝트를 선택한 후 확인을 클릭하세요. 지금 진행하는 강좌의 경우는 Launcher에서 진행하고 있습니다. 필요한 프로젝트에 미리 설치해도 상관은 없습니다.
EntityFramework를 설치하고 있습니다. 또한, 충돌 가능성이 있는 라이브러리는 자동으로 제거합니다. 예를 들어 설치중인 버전보다 낮은 버전의 EF가 이미 설치되어 있었다면, 제거한 후 설치합니다.
이제 데이타를 바인딩해야 합니다. 먼저 고객 정보에 대한 내용을 처리합니다. EF의 Context를 생성하기 위한 맴버 변수를 추가합니다.
LinqView.cs
29
|
NG.Data.Entities.AdventureWorks2014Entities dataContext; |
AdventureWorks2014Entities의 인스턴스를 생성하고 맴버에 할당합니다. 33번 라인과 같이 생성자를 호출하여 Context를 초기화합니다.
31
32
33
34
35
36
|
public LinqView() { InitializeComponent(); dataContext = new NG.Data.Entities.AdventureWorks2014Entities(); } |
만약, 데이타베이스의 연결 정보를 변경하려면 아래와 같이 코드를 수정하여 처리할 수 있습니다. 아래 코드가 정상적으로 동작하려면 Shell의 App.config에 연결 정보가 포함되어 있어야 합니다. 또한, 이 연결 정보가 SqlConnection을 사용하는지 또는 EntityConnection을 사용하는지에 따라 코드는 달라질 수 있습니다. 아래의 예제는 EntityConnection을 사용할 때 SqlConnection으로 변환하여 처리하는 방법입니다.
31
32
33
34
35
36
37
|
public LinqView() { InitializeComponent(); dataContext = new NG.Data.Entities.AdventureWorks2014Entities(); dataContext.Database.Connection.ConnectionString = new EntityConnection(System.Configuration.ConfigurationManager.ConnectionStrings[ "AdventureWorks2014Entities" ].ToString()).StoreConnection.ConnectionString; } |
EF 하위 버전(5.x)의 경우 Designer First로 추가하면 기본 생성자에 연결 정보를 받을 수 있습니다. 이런 경우에는 아래처럼 처리할 수 있습니다.
31
32
33
34
35
36
37
|
public LinqView() { InitializeComponent(); EntityConnection connection = new EntityConnection(System.Configuration.ConfigurationManager.ConnectionStrings[ "AdventureWorks2014Entities" ].ToString()); dataContext = new NG.Data.Entities.AdventureWorks2014Entities(connection); } |
자신의 환경에 맞도록 설정한 후 데이타를 바인딩하여 정상적으로 Select가 되는지 확인합니다.
37
38
39
40
41
42
43
|
protected override void OnLoad(EventArgs e) { _presenter.OnViewReady(); base .OnLoad(e); this .customerList.DataSource = dataContext.Employees.ToList(); } |
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
원본 글 보기
http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로 #이미지맥스 #심플핫키 #오토클리커 #UiPath #Brity #스푸퍼 #DKOM #모바일게임매크로 #다클라매크로 #다계정매크로 #인스타그램매크로 #짜맥매크로 #챗굴매크로
댓글