저는 프로젝트를 구성하는 것에 대해 딜레마가 있습니다. 나는 뉴스 레터를 보내는 신청서를 작성 중입니다. 내 솔루션에서 세 개의 프로젝트로 나누었습니다 : Newsletter.UI
(WPF), Newsletter.DAL
및 Newsletter.Services
. Newsletter.DAL
에는 EF가 생성하는 엔티티를 나타내는 클래스가 추가 파일 (부분 클래스)에서 향상되어 -을 재정의합니다. Newsletter.UI
에는 프레젠테이션을위한 소스 WPF 프로젝트가 있습니다. 나를위한 문제는 Newsletter.Services
으로 시작됩니다.Entity Framework를 사용하여 프로젝트에서 레이어를 구성하는 방법은 무엇입니까?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newsletter.DAL;
namespace Newsletter.Services
{
public class MailingListService
{
private NewsletterEntities _context;
public MailingListService()
{
_context = new NewsletterEntities();
}
public List<string> GetAllMailingListsNames()
{
var query = from m in _context.MailingLists select new { m.Name };
List<string> names = new List<string>();
foreach (var m in query)
names.Add(m.Name);
return names;
}
public List<MailingList> GetAllMailingLists()
{
var query = from m in _context.MailingLists select m;
return query.ToList();
}
}
}
MessageService.cs
:
MailingListService.cs
만든 그러나
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newsletter.DAL;
using System.Data.Entity;
namespace Newsletter.Services
{
public class MessageService
{
private NewsletterEntities _context;
public MessageService()
{
_context = new NewsletterEntities();
}
public List<Message> GetAllMessages()
{
return (from m in _context.Messages select m).ToList();
}
public static Message GetMessageByID(int id)
{
using (NewsletterEntities context = new NewsletterEntities())
{
Message message = (from m in context.Messages where m.MessageID == id select m).FirstOrDefault();
return message;
}
}
}
}
RecipientService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newsletter.DAL;
namespace Newsletter.Services
{
public class RecipientService
{
private NewsletterEntities _context;
public RecipientService()
{
_context = new NewsletterEntities();
}
public void addRecipient(Recipient newRecipient)
{
_context.Recipients.AddObject(newRecipient);
}
}
}
을,이 문제가 가져옵니다. 수신자 생성을위한 창을 열면 MailingListService
인스턴스를 생성하여 메일 링리스트의 이름을로드합니다. 그런 다음 새 Recipient
을 만들려고하면 RecipientService
인스턴스를 만들고받는 사람을 추가하려고합니다. 다른 곳에서 컨텍스트를 사용할 수 없다는 오류가 발생합니다.
해결 방법? 내 접근 방식이 안 좋은가? 무엇이되어야 하는가? (서비스에서 무엇이 있어야 하는가?) 나는 미래에 그런 실수를하고 싶지 않다. MVVM 접근법을 배우고 싶지는 않습니다. 지금하고있는 방식과 다소 차이가 있습니다.
정확한 오류 메시지는 무엇입니까? 그리고 어떤 라인에서 오류가 발생합니까? – Martin4ndersen