1. 준비 작업, 몇 가지를 설치하고 몇 가지를 복사해야 합니다.
0. VS2008 또는 VS2010을 열고 새로운 엔지니어링 콘솔 프로젝트 LinqMySQL을 생성하며 대상 어셈블리는 .NET 3.5입니다.
1. NEXT까지 MySQL을 다운로드하고 설치하세요.
2. MySQLWorkBench를 다운로드하여 NEXT까지 설치하고 열고 테스트 데이터베이스, Customers 및 Orders 테이블을 생성합니다.
------------------------------------- ---
고객 테이블 생성
(
CustomerID varchar(50)은 null이 아닙니다. PRimary 키,
ContractName varchar(50)이 null이 아닙니다.
전화 varchar(50)이 null이 아닙니다.
도시 varchar(50)은 null이 아닙니다.
국가 varchar(50) null이 아님
)
테이블 주문 생성
(
OrderID int는 null 기본 키가 아닙니다.
주문 날짜 날짜 시간,
CustomerId varchar(50)이 null이 아닙니다.
외래 키(CustomerID)는 고객(CustomerID)을 참조합니다.
)
------------------------------------- ---
3. MySQL .NET 커넥터 6.3.2를 다운로드하고 다음 설치
4. DbLinq를 다운로드하고 압축을 풀고 시스템 환경 변수에 대한 경로를 설정합니다.
5. LinqMySql 디렉터리에 새 LinqDlls 폴더를 만듭니다.
C:Program FilesReference AssembliesMicrosoftFrameworkv3.5 폴더를 엽니다.
다음 Dll을 LinqDlls 폴더에 복사합니다.
------------------------------------- ---
시스템.Core.dll
System.Data.DataSetExtensions.dll
시스템.데이터.Linq.dll
System.Runtime.Serialization.dll
System.xml.Linq.dll
------------------------------------- ---
6. MySQLMySQL Connector Net 6.3.2Assembliesv2.0 디렉터리로 이동하여 복사합니다.
------------------------------------- ---
MySql.Data.dll
------------------------------------- ---
DbLinq 설치 디렉터리로 이동
2. 작업을 시작하고 단계별로 해보겠습니다.
1. DbLinq 디렉터리에 대한 CMD, CD를 열고 DbMetal.exe를 사용하여 MySQL DataContext를 생성합니다. 명령은 다음과 같습니다.
------------------------------------- ---
DbMetal.exe
-공급자=MySql
-데이터베이스:MyDatebase
-서버:로컬호스트
-사용자:mysql사용자
-passWord:당신의 비밀번호
-네임스페이스:LinqMySql
-코드:TestDataContext.cs
-sprocs
------------------------------------- ---
생성된 TestDataContext.cs를 LinqMySql 프로젝트 루트 디렉터리로 잘라내어 LinqMySql 프로젝트에 추가합니다.
2. Main 함수에 다음 코드를 추가합니다.
------------------------------------- ---
string connStr = @"server=localhost;database=test;user=mysqluser;pwd=yourpassword;";
using (var conn = new MySqlConnection(connStr)){ var t = new Test(conn); var data = from customer in t.Customers select customer.ContractName; foreach(var d in data) { Console.WriteLine(d); }}------------------------------------------------ -----3. 컴파일 및 실행이 완료되었습니다.
4. 다음으로 .NET 3.5를 .NET2.0으로 저하해야 합니다. 먼저 프로젝트의 대상 어셈블리를 .NET2.0으로 변경합니다.
그런 다음 참조의 여러 dll이 느낌표로 바뀌는 것을 발견하고 모두 삭제한 다음 LinqDlls 폴더의 dll을 변경합니다.
Referece에 여러 Dll을 추가한 다음 이러한 Dll의 속성에서 로컬 복사를 True로 설정하고 버전 지정을 False로 설정합니다.
5. 다시 컴파일하면 성공할 것입니다!
3. 다른 이야기는 어떤가요? .NET2.0에서 LinqDataSet을 사용하려고 하는데 데이터베이스가 MySQL을 사용합니다.
1. 방금 추가한 MySQL 커넥터가 VS에 의해 로드되도록 VS를 다시 시작합니다.
2. 서버 탐색기를 열고 데이터 연결을 마우스 오른쪽 버튼으로 클릭한 후 새 링크를 추가하고 데이터 커넥터를 변경합니다.
MySql Connector를 선택하고 필요한 서버 주소, 사용자 이름, 비밀번호를 NEXT까지 입력하고 연결이 성공하는지 테스트합니다.
3. LinqMySql 대상 어셈블리를 .NET3.5로 변경하고 프로젝트를 마우스 오른쪽 버튼으로 클릭한 다음 강력한 형식의 DataSet을 추가합니다.
서버 탐색기의 Mysql 테스트 데이터베이스 아래에 있는 Customers 및 Orders 테이블을 DataSet에 추가합니다.
4. Main 함수에 테스트 코드 작성
------------------------------------- ---
using (var dataSet = new DataSet1()){ var customerAdapter = new DataSet1TableAdapters.CustomersTableAdapter(); var orderAdapter = new DataSet1TableAdapters.OrdersTableAdapter(); orderAdapter.Fill(dataSet.Orders); query = order.OrderDate.Date > new DateTime(2010, 8, 1)인 dataSet.Orders의 주문에서 new { order.OrderID, order.CustomerID }를 선택합니다. foreach(쿼리의 var order) { Console.WriteLine(order. 고객ID) }}-------------------------------- --- --------5. 컴파일하고 실행하면 성공합니다!
6. 잠깐만요. 현재는 .NET3.5뿐입니다. .NET2.0으로 변경하는 방법은 무엇입니까?
대상 어셈블리를 .NET2.0으로 직접 변경하고 컴파일하고 실패합니다!
7.TMD는 DataSet1.designer.cs를 확인하고 .NET3.5에서 다음 코드를 찾았습니다.
------------------------------------- ---공용 부분 클래스 고객DataTable : global::System.Data.TypedTableBase
------------------------------------- ---
공개 부분 클래스 고객DataTable : 전역::System.Data.DataTable, 전역::System.Collections.IEnumerable--------------- -- -------------8.그래서? 무엇을 해야 할까요? 대상 어셈블리를 .NET3.5로 재설정한 다음 LinqMySql 디렉터리로 이동하여
------------------------------------- ---
DataSet1.Designer.cs
데이터세트1.xsc
데이터세트1.xsd
DataSet1.xss
------------------------------------- ----
몇 가지 파일을 복사하여 백업한 다음 대상 어셈블리를 다시 .NET2.0으로 설정한 다음. .
그런 다음 방금 백업한 위 파일을 프로젝트 디렉터리에 다시 복사하고 컴파일하고 다시 실행하면 성공합니다!
9. 이 시점에서 우리는 .NET2.0에서 MySql을 사용하기 위해 LinqSQL 및 LinqDataSet을 성공적으로 사용했지만
.NET2.0에서 MySql을 사용하기 위해 LinqEntity를 성공적으로 사용하지 못했습니다. 나중에 그것에 대해 이야기합시다.