부분 클래스 내부의 LTS 개체 중 하나에 새 생성자를 추가하고 싶습니다. 데이터베이스에서 오브젝트의 인스턴스를 리턴해야합니다. 기본적 아이디어는LINQ-TO-SQL 개체의 메서드 가져 오기
public Questionnaire(int id)
{
this = (from q in db.Questionnaires
where q.Id == id
select q).SingleOrDefault();
}
나는 각각의 속성을 통해 이동하고 반환 된 객체의로 설정하지만 잔인한 것 같아 내가 내 데이터베이스 모델을 변경하면 나는이 코드를 편집 할 수 있도록해야합니다 수 있습니다.
이렇게하는 것이 가장 좋은 방법은 무엇입니까? DataContext는 개체에 대한 변경 내용을 추적 할 수 없기 때문에 정적 메서드를 사용할 수 없습니다.
클래스의 새 인스턴스를 만든 다음 해당 클래스에서 GET 메서드를 호출해야합니까? 즉
public Questionnaire Get(int id)
{
return (from q in db.Questionnaires
where q.Id == id
select q).SingleOrDefault();
}
그런 다음이
Questionnaire qs = new Questionnaire();
qs = qs.Get(1);
. 내가 성취하려고하는 것이 가능한지 알고 싶습니다. – Marko
내 관점에서 볼 때 생성자 안에 새 객체를 만들고 생성중인 객체를 보유하고있는 변수에 할당하기 때문에 첫 번째 솔루션을 피해야합니다. 이상해. 두 번째로 유효한 것은 도메인 객체에 논리를 캡슐화하려는 것입니다. 이 논리는 데이터의 일종의 저장소 (패턴의 이름)에 속해야합니다. – foliveira
제가 게시 한 첫 번째 옵션은 내가 성취하고자하는 것을 설명하려고 시도하는 것입니다. 논리와 도메인 객체를 섞어서는 안되지만 각각의 개별 클래스는 데이터에 액세스하기위한 고유 한 메서드가 필요합니다.Get(), GetAll(), Insert()는 분명히 충분하지 않습니다. Questionnaire 클래스에서 GetAllForClient (...), GetAllForUser (...)와 같은 메서드를 사용하면 User 개체에 GetAllByClient(), GetCurrentUser() 등이 있습니다. 저장소 패턴? – Marko