プロジェクトの編成についてジレンマがあります。ニュースレターを送信するためのアプリケーションを作成しています。私のソリューションでは、Newsletter.UI
(WPF)Newsletter.DAL
とNewsletter.Services
. 追加のファイルで強化された EF によって生成されるエンティティを表すクラスがあります(Newsletter.DAL
それらは部分クラスです) - overriden ToString()
。もちろん、Newsletter.UI
プレゼンテーション用のWPFプロジェクトがあります。私にとっての問題は から始まりますNewsletter.Services
。
今のところ私は作成しましたMailingListService.cs
:
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
:
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アプローチを学びたくありません.多かれ少なかれ私がやっている方法でこれを行う必要があります.