내 의견이 마음에 들었으므로 확장하겠습니다. 내가 테이블을 가지고 있다고 가정 해 보겠습니다.
Foo
FooId int
Desc varchar(32)
Bar
BarId int
Desc varchar(32)
이제 실제로 더 많은 것을 말하고 50 개의 테이블을 말하는 것처럼 보자. 나는 견과류 일 것이므로 손으로 모든 것을 만들고 싶지 않을 것입니다. ADO.NET을 사용하면 데이터 테이블을 만들고 잠재적으로 공예품을 손으로 만들 수 있습니다. 글쎄, Linq To SQL을 사용하면 대부분의 모델링을 처리하는 문서를 만들었지 만 데이터베이스가 거의 비슷한 정도로 제한되어있었습니다. 그러나 Entity Framework MS는 한 발 더 나아갔습니다. 이제 데이터베이스 계층, 중간 계층 및 개체 계층이 있습니다. '컨텍스트'가 원하는 것 이상으로 오브젝트를 조작하고 만들 수 있다고해도 과언이 아닙니다.
하지만 Entity Framework 6.1.3 모델을 만들고 내 데이터베이스를 선택하고 먼저 데이터베이스를 선택한다고 가정 해 봅시다.나는 객체를 추가 할 때 모델 표현을 얻습니다. 그리고 그것들은 나를위한 문맥 아래에 저장됩니다. EF에 관한 한 이러한 객체는 테이블입니다. 당신은 내가 방금 추가 한 새로운 푸 객체를 저장하고 나는 POCO 개체의 코드 생성을 할 필요가 없었어요
using(var context = new DBContext())
{
var newFoo = new Foo { Id = 1, Desc = "A" };
context.Foo.Add(newFood);
context.SaveChanges();
}
그런 짓을. EF는 모델 개체를 선택하고 마우스 오른쪽 버튼을 클릭하고 '사용자 지정 도구 실행'을 선택하여 사용자 지정 도구를 실행할 때 저를 위해 저를했습니다. 본질적으로 이것은 POCO 및 설정을 생성하기 위해 데이터를 실행하는 것입니다. 또는 T4에 코드를 작성합니다. 설정을 변경하기 위해 T4를 업데이트 할 수 있지만 지나치게 미친 것은 권장하지 않습니다.
이미 내려가는 방법이 더 좋습니다. 새로운 방법으로 코드를 감싸고 저장소가 있습니다. 리포지토리의 이점은 EF 컨텍스트를 인라인으로 말하면 기술을 혼합하거나 필요에 따라 변경할 수 있다는 것입니다. 제가 말하고자하는 유일한 것은 여러분이 사용하는 객체를 EF 나 다른 기술이 생성하는 것으로 유지하는 것입니다. 아니면 자동 호출하는 속성을 가진 비즈니스 로직을 가지고있을 수도 있습니다. 물론 EF를 오염시키지 않고 Repo 패턴으로 사용할 수 있습니다. 리포지토리 패턴 IMHO는 CRUD 작업이 검색 기술과 호출 부분 사이에 있어야한다는 중재자 여야합니다.
SQL 테이블을 "개체로"사용한다는 것은 무엇을 의미합니까? POCO 클래스 나 EF 대신에'DataTable'을 사용하고 있다고 말하고 있습니까? 그렇다면 전혀 그렇지 않다. 장점은 코드를 작성한 사람이 초기에 일을하는 대신 애니메이션을 보는 데 더 많은 시간을 소비해야한다는 것입니다. 단점은 사용하기 쉽고 강력하게 형식화 된 클래스 대신 불쾌하고 사용하기 쉬운 오류 점이 있다는 점입니다. –
가난한 설명을 죄송합니다. 더 자세한 정보로 다시 설명해 드리겠습니다. 우선 그들은 LinQ-To-Sql (dbml 파일)을 사용하고 있습니다. 'foos'테이블에는 문자열 속성 "name"이 있습니다. 일반적으로 나는 계속해서 유형 문자열의 소품 이름을 가진 클래스 'foo'를 만들고 앱을 따라 사용하고 DBContext.Foos를 호출하고 내 객체 "foo"를 삽입합니다. 하지만 그들은 Foo (테이블)를 앱의 모든 곳, func의 리턴 타입, List 등과 같이 사용하여 클래스 객체를 사용하는 것처럼 테이블을 직접 사용합니다. 이것을 보지 마라. 나는 그것에 대해 내 의구심을 가지고있다. –
* "그러나 그들은 앱에서 사방 (테이블)을 사용하고있다"* - 아니, 그렇지 않다. 그것은 SQL 테이블입니다. 응용 프로그램은 C#에 있습니다. 그들이 실제로하는 일을 말해줘. 코드에서'Foo'는 무엇입니까? 실제적인 것은 무엇입니까? 유형은 무엇입니까? 수업은 무엇입니까? 누가 그것을 정의 했습니까? 그들은 마술처럼 DB를 .NET으로 가져 오는 것이 아닙니다. 이것은 어딘가에서 온 코드입니다. –