다양한 엔터티를 반환하는 라이브러리 역할을하는 간단한 데이터 액세스 클래스를 만들려고합니다. 내 모든 엔티티 클래스는 VS 2013에서 Linq-to-SQL 매퍼를 통해 생성되며 Find (primary id)를 통해 dataContext에서 모두 반환 될 수 있습니다.
모든 테이블 / 개체에 대해 반복 할 필요없이 일반 찾기, 삭제, 업데이트 등을 정의하고 싶지만 리포지토리 패턴을 만들고 싶지 않습니다.
상관없이 작동하는 일반적인 방법을 어떻게 생성합니까? 이것은 내가 가진 것이고 물론 T가 정의되지 않았다고 말하지만, 비 제네릭 클래스에서 제네릭 메서드를 만들 수 있다고 생각했기 때문에 내가 뭘 잘못하고 있습니까?
내가하고 싶은 것은
var c = DAL<Customer>.Find(id)
var e = DAL<Employee>.Find(id)
... 등
내가 쓰려고 시도한 코드는
public class DAL
{
private string _key;
private DataContext _context = null;
//private DbSet<T> _table = null;
public DAL(string key)
{
_key = key;
_context = new DataContext();
}
public void Dispose()
{
_context.Dispose();
}
public DbSet<T> Find<T>(int id)
{
var d = _context.Set<T>();
//return d.Find(id);
}
}
난 좀 길을 잃었 어 ... 정의하고 싶지 않아
public class DAL<T> where T:class
각 DAL을 유형에 연결
제가 일반 넷 호드를 처음 접하는 것은 이번이 처음이므로 도움을 주시면 감사하겠습니다.
클래스의 일반 메서드를 지정할 수 있지만 제약 조건을 사용해야합니다.
public class DAL
{
// .... previously written code
public DbSet<T> Find<T>(int id) where T : class
{
return _context.Set<T>();
}
}
또한 다음과 같이 호출해야합니다.
var dal = new DAL();
var data = dal.Find<Customer>(1);
또한 코드에는 많은 문제가 있고 dispose 메서드를 정의하지만 IDisposable 인터페이스를 구현하지 않았으며 실제로 메서드에서 아무것도 반환하지 않습니다.
참고 : 모든 의도와 목적을 위해 이것은 여전히 저장소 패턴입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다