이전에 했던 MVC6에서는 Startup.cs에 IoC컨테이너가 내장되어있어 객체를 주입할수 있었는데 MVC5에는 MS에서 만든 IoC컨테이너 Unity Container를 사용하여 의존성 주입을 하는 방법이 있다.
using Note.Model;
using System.Collections.Generic;
namespace Note.IDAL
{
public interface INoticeDal
{
/// <summary>
/// 1. 공지사항 게시물 리스트 출력
/// </summary>
/// <returns></returns>
List<Notice> GetNoticeList();
/// <summary>
/// 2. 공지사항 상세 출력
/// </summary>
/// <param name="noticeNo"></param>
/// <returns></returns>
Notice GetNotice(int noticeNo);
/// <summary>
/// 3. 공지사항 등록
/// </summary>
/// <param name="notice"></param>
/// <returns></returns>
bool PostNotice(Notice notice);
/// <summary>
/// 4. 공지사항 수정
/// </summary>
/// <param name="notice"></param>
/// <returns></returns>
bool UpdateNotice(Notice notice);
/// <summary>
/// 5. 공지사항 삭제
/// </summary>
/// <param name="noticeNo"></param>
/// <returns></returns>
/// bool DeleteNotice(Notice notice); 객체를 넘겨줄 수 도 있다.
bool DeleteNotice(int noticeNo);
}
}
using Microsoft.Extensions.Configuration;
using Note.DAL.DataContext;
using Note.IDAL;
using Note.Model;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Note.DAL
{
public class NoticeDal : INoticeDal
{
private readonly IConfiguration _configuration;
public NoticeDal(IConfiguration configuration)
{
_configuration = configuration;
}
/// <summary>
/// 1. 공지사항 게시물 리스트 출력
/// </summary>
/// <returns></returns>
public List<Notice> GetNoticeList()
{
using (var db = new NoteDbContext(_configuration))
{
return db.Notices
.OrderByDescending(n=>n.NoticeNo)
.ToList();
}
}
/// <summary>
/// 2. 공지사항 상세 출력
/// </summary>
/// <param name="noticeNo"></param>
/// <returns></returns>
public Notice GetNotice(int noticeNo)
{
throw new NotImplementedException();
}
/// <summary>
/// 3. 공지사항 등록
/// </summary>
/// <param name="notice"></param>
/// <returns></returns>
public bool PostNotice(Notice notice)
{
throw new NotImplementedException();
}
/// <summary>
/// 4. 공지사항 수정
/// </summary>
/// <param name="notice"></param>
/// <returns></returns>
public bool UpdateNotice(Notice notice)
{
throw new NotImplementedException();
}
/// <summary>
/// 5. 공지사항 삭제
/// </summary>
/// <param name="noticeNo"></param>
/// <returns></returns>
/// bool DeleteNotice(Notice notice); 객체를 넘겨줄 수 도 있다.
public bool DeleteNotice(int noticeNo)
{
throw new NotImplementedException();
}
}
}
using Note.IDAL;
using Note.Model;
using System;
using System.Collections.Generic;
namespace Note.Bll
{
public class NoticeBll
{
private readonly INoticeDal _noticeDal;
public NoticeBll(INoticeDal noticeDal)
{
_noticeDal = noticeDal;
}
/// <summary>
/// 1. 공지사항 게시물 리스트 출력
/// </summary>
/// <returns></returns>
public List<Notice> GetNoticeList()
{
return _noticeDal.GetNoticeList();
}
/// <summary>
/// 2. 공지사항 상세 출력
/// </summary>
/// <param name="noticeNo"></param>
/// <returns></returns>
public Notice GetNotice(int noticeNo)
{
if (noticeNo <= 0) throw new ArgumentException();
return _noticeDal.GetNotice(noticeNo);
}
/// <summary>
/// 3. 공지사항 등록
/// </summary>
/// <param name="notice"></param>
/// <returns></returns>
public bool PostNotice(Notice notice)
{
if (notice == null) throw new ArgumentNullException();
return _noticeDal.PostNotice(notice);
}
/// <summary>
/// 4. 공지사항 수정
/// </summary>
/// <param name="notice"></param>
/// <returns></returns>
public bool UpdateNotice(Notice notice)
{
if (notice == null) throw new ArgumentNullException();
return _noticeDal.UpdateNotice(notice);
}
/// <summary>
/// 5. 공지사항 삭제
/// </summary>
/// <param name="noticeNo"></param>
/// <returns></returns>
/// bool DeleteNotice(Notice notice); 객체를 넘겨줄 수 도 있다.
public bool DeleteNotice(int noticeNo)
{
if (noticeNo <= 0) throw new ArgumentNullException();
return _noticeDal.DeleteNotice(noticeNo);
}
}
}
DB정보 같은 민감 정보들은 C#코드에 직접 작성하지 않고
appsetting.json에 DB정보들을 적는걸 권장한다.