예제 ¶
Visual Studio 2008을 이용해 LINQ To SQL을 테스트하는 간단한 예제이다.
DataList 컨트롤에 바인딩하기 ¶
- 테이블 생성, 여기서는 NickName 컬럼을 가진 Member라는 테이블을 사용한다.
- 서버 탐색기(메뉴->보기->서버 탐색기)를 연 다음 DB서버 추가.
- 솔루션 탐색기에서 추가->새 항목->데이터->LINQ to SQL 클래스 생성
- 열려진 dbml 파일로 테이블을 끌어 넣고 저장한다.
- 테스트할 aspx 페이지를 만든 다음 아래 태그를 넣는다.
<asp:DataList ID="Grid1" runat="server"> <ItemTemplate> <%#Eval("nickname") %> </ItemTemplate> </asp:DataList> - CS 파일(Code Behind)를 열어 아래 코드를 넣는다. 앞서 만든 파일 이름이 DataClasses1.dbml 이면
protected void Page_Load(object sender, EventArgs e){ DataClasses1DataContext db = new DataClasses1DataContext(); var query = from m in db.Member select m; Grid1.DataSource = query; Grid1.DataBind(); } - 해당 aspx 페이지에서 "웹 브라우저로 보기"하여 테스트한다.
XML 파일로 만들기 ¶
다음 코드는 Linq에서 읽어들여 xml로 결과를 출력하는 예제이다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;
using System.Xml;
using System.Xml.Linq;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataClasses1DataContext db = new DataClasses1DataContext();
IEnumerable<DataClasses1_Member> query = from m in db.Member select m;
Response.Buffer = false;
Response.Clear();
Response.ContentType = "application/xml";
using (XmlWriter writer = XmlWriter.Create(Response.OutputStream))
{
XElement xmlRoot = new XElement("root");
foreach (DataClasses1_Member q in query)
{
XElement xmlMember = new XElement("member",
new XAttribute("idx", q.idx),
new XElement("nickname", q.nickname),
new XElement("password", q.password),
new XElement("description", q.DataClasses1_Community.name) //FK 관계의 경우 자동으로 컬렉션 등록되기 때문에 굳이 JOIN문을 이용할 필요가 없다.
);
xmlRoot.Add(xmlMember);
}
xmlRoot.WriteTo(writer);
Response.Flush();
}
Response.End();
}
}
}