2012-10-12 3 views
0

나는 특정 이벤트가 발생할 날짜를 표시 (강조 표시)하는 응용 프로그램을 작성 중입니다. 내가 사용해야하는 데이터베이스에는 날짜 간격 또는 특별한 의미가있는 날짜 모음 (예 : 공휴일, 학교 간 휴무 ... 모음)이 포함 된 테이블이 있습니다. 이벤트가 정의되면 사용자는 이벤트가 발생하는 날 (주기적으로 발생하는 경우)을 정의하지만 사용자는 특정 간격에서 특정 이벤트가 발생했는지 또는 발생하지 않는지를 정의 할 수도 있습니다. 예 : 일요일이 공휴일이 아닌 경우 매주 일요일에 이벤트가 발생할 수 있습니다. 이제는 해당 이벤트에 대한 데이터베이스에서 데이터를 읽은 다음 (해당 이벤트가 발생하는 날짜를 결정) 강조 표시된 날짜 목록을 채 웁니다 (MotnhCalendar 및 BoldedDates를 사용한 그래픽 표현의 경우). 배열) :이 코드를 제대로 작동하려면SQL 데이터베이스에서 C#의 목록으로 데이터로드

for (DateTime day = start; day < end;day = day.AddDays(1)) 
{ 
    if (Sunday && day.DayOfWeek == DayOfWeek.Sunday) 
    { 
     MarkedDates.Add(day); 
    } 
    monthCalendar1.BoldedDates = MarkedDates.ToArray(); 
} 

지금, 나는 그 날짜가) 휴일 인 경우이 경우 특별한 간격 (에 속하는 날짜를 생략해야합니다. 쉽게 경우 절에 다른 조건을 추가하여 수행 할 수 있습니다 :

!SpecialDates.Contains(day) 

문제는 내가 데이터베이스에서 이러한 특수 날짜와 함께 목록을 채우는 방법을 모르는 것입니다. 이러한 특별한 날짜 컬렉션/간격은 언제든지 변경 될 수 있기 때문에 단순히 "하드 코딩"할 수는 없습니다. 그래서, 내 질문입니다 - 어떻게 SQL 및 C# 명령을 사용하여 데이터베이스에서 데이터를 읽고 목록에 저장합니다.

감사

+0

"* 어떻게 내가 , SQL 및 C# 명령을 사용하여 데이터베이스에서 데이터를 읽고 목록에 저장 * * "- 이것은 모두 지정하지 않은 백엔드로 사용하는 방법에 따라 다릅니다. – James

+0

백엔드에서 무엇을 의미합니까? 저는 Visual Studio 2010을 사용하고 있으며 데이터베이스는 클라이언트가 소유 한 원격 서버에 있으며 어느 SQL 서버를 사용하고 있는지 확실하지 않습니다. – NDraskovic

+0

백엔드는 지속성 계층을 의미합니다. 데이터 베이스. 옵션은 실행중인 SQL Server의 버전에 따라 달라 지므로 중요하다고 판단 할 수 있습니다. – James

답변

1

그것은 당신이 내가 당신의 데이터베이스에 액세스 할 ADO.NET Entity Framework 같은 ORM 도구를 사용하는 것이 좋습니다 SQL 서버 2008 R2를 사용하여 모양으로 - 가장 최신 버전 EF 5로가는.

온라인으로 &을 실행하는 방법에 대한 온라인 튜토리얼이 많이 있습니다. 좋은 것으로는 Creating Model Classes with the Entity Framework입니다.

여기에 당신이 무엇을 달성해야 코드의 최소한의 예입니다, 당신에게 그것을 만드는 방법 간단한 아이디어를 제공하려면 어떻게 찾고 :

using (var db = new MyDbContext()) 
{ 
    var specialDates = db.SpecialDatesTable.ToList(); 
} 
관련 문제