이것은 일부 생각을하고 방금 POC 작업을 시도했지만 조금은 솔직하게 잃어 버렸습니다.n 계층 응용 프로그램에서 리포지토리 모델 사용
그래서이 연습의 목적으로 전통적인 DAL, BAL & FE 구조가 있습니다.
DAL은 Entity Framework를 통한 내 DB에 대한 참조를 가지고 있으며 이로부터 단일 테이블 JobInfo에 액세스 할 수 있습니다.
인공 간은 DAL 프로젝트를 참조하고이 인터페이스가 있습니다
public interface IJobInfoRepository
{
IEnumerable<JobInfo> SelectAll();
JobInfo SelectByID(string id);
void Insert(JobInfo obj);
void Update(JobInfo obj);
void Delete(string id);
void Save();
}
가 그럼이 클래스가 : 내 FE 프로젝트에서
public class JobInfoRepository : IJobInfoRepository
{
public JobInfoRepository()
{
_db = new TestEntities();
}
public JobInfoRepository(TestEntities db)
{
_db = db;
}
private TestEntities _db = null;
public IEnumerable<JobInfo> SelectAll()
{
return _db.JobInfoes.ToList();
}
public JobInfo SelectByID(string id)
{
return _db.JobInfoes.Find(id);
}
public void Insert(JobInfo obj)
{
_db.JobInfoes.Add(obj);
}
public void Update(JobInfo obj)
{
_db.Entry(obj).State = EntityState.Modified;
}
public void Delete(string id)
{
JobInfo existing = _db.JobInfoes.Find(id);
_db.JobInfoes.Remove(existing);
}
public void Save()
{
_db.SaveChanges();
}
}
을 나는 BAL 프로젝트를 참조하십시오. 그러나 이것이 내가 잃어버린 곳입니다. DAL 프로젝트에 대한 FE 액세스를 제공하지 않고 내 JobInfo 엔티티에 대한 가시성을 갖지 않으면 FE 코드가 BAL 프로젝트의 CRUD 연산을 어떻게 수행 할 수 있습니까?
감사합니다,
데이브
단점 2.는 단시간에 매핑 할 시간을 낭비한다는 것입니다. 나는 1과 함께 갈 것이다. –
나는 직장에서 최근에했던 프로젝트에 대해 1 번에서 언급 한 접근 방식을 취했으며, 필요한 것보다 더 적절했다. 그러나 그런 식으로 그 일을 한 이후로 나는 더 나은 방법을 찾고 DAL에서 FE를 완벽하게 분리하기 위해 잔소리를했습니다. – user3742300
AutoMapper 또는 ValueInjector를 사용한 적이 없기 때문에 절대로 사용하지 마십시오. AutoMapper가 꽤 비대해진 것은 사실입니까?이 기사에 대한 기사는 제가 여기에 있습니다 : http://rogeralsing.com/2013/12/01/why-mapping-dtos-to-entities-using-automapper-and -entityframework-is-horrible/ – user3742300