MVC4/EF5 프로젝트에서 작업 중이며 응용 프로그램 디자인에 많은 시간을 투자하고 싶습니다.MVC 4 및 EF 5 : CRUD 객체에 가장 효과적인 방법
나 자신을 위해 하나의 정책/원칙을 만들었습니다. 내 컨트롤러는 전용으로 사용해야하며 이는 특정 Repo와 만 상호 작용할 수 있음을 의미합니다.
지금 나는 다음과 같은 딜레마에 찾고 있어요예.
객체를 (난 그냥 몇 가지 의사 코드를 쓰고 있어요) : 사용자가 블로그, 포스트,
UserController 코멘트 -> UserRepo ->
이 BlogController 사용자 개체 처리 -> BlogRepo -> 처리에게 블로그
등 ... 객체. EF5를 사용하여 데이터베이스에 새로운 객체를 생성/추가하는 데 가장 뛰어난 것은 무엇입니까?
첫 번째 접근 방식 : 사용자를 추가하여 블로그를 추가하거나 게시물을 추가하는 기능을 추가하십시오.
addBlog(Blog b){this.Blog.addBlog(b);}
addPost(int blogid, Post p){this.Blog(b).addPost(p);}
은 나를 위해이 모든 것들을이하는 usercontroller을 시작 하시려면 userrepo를 삽입하고 개체를 가져 오기 위해 사용자 테이블에서 읽기 작업을해야합니다 것을 의미합니다. 그런 다음 addPost 함수를 수행하고 변경 사항을 저장합니다.
두번째 접근법 : 이 블로그를주고 포스트는 일부 외국의 키 아이디
Blog property: UserId
Post property: UserId, BlogId
이 블로그가 생성 될 때마다 의미하는 blogcontroller가 시작됩니다하는 blogrepo이 될 것입니다에게 객체 주입되었고 '둘러보기'가 필요하지 않습니다. 컨트롤러는 새 Blog 객체를 컨텍스트에 추가합니다. (UserId 속성은 웹 보안 컨텍스트에서 설정 됨)
이렇게하면 게시물이 생성 될 때마다 포스트 컨트롤러가 시작되고 포스트 프로 포가 삽입되며 '둘러보기'가 필요하지 않습니다. 컨트롤러는 삽입 된 UserId 및 BlogId가있는 새 Post 객체를 추가하기 만합니다. (컨트롤러 동작의 매개 변수입니다)
제게 두 번째 방법은 하나가 아닌 다른 테이블에 부하를 분산시키는 것 같습니다. 그러나이 방법의 단점은 모델 테스트를 실제로 할 수 없다는 것입니다. 테스트 할 User 객체에 addBlog 함수가 없어지기 때문입니다.
제 질문은 다소 명확합니까? 내 응용 프로그램을위한 가장 뛰어난 성능의 프레임 워크를 만들고 싶습니다. 또한 다음과 같은 속성을 가진 User 객체의 영향은 무엇입니까?
가상 ICollection에 가상 IColleciton은
그들은 모두 사용자 개체를 가져 오는 검색 할 수 있습니다.(가상 객체에 게으른로드가 있음)
전용 BlogController에 특정 사용자 ID에 속한 블로그를 색인화하는 것이 좋습니다.
모든 조언과 의견을 보내 주셔서 감사합니다. SQL 프로파일 러와 생성 된 엔티티 프레임 워크 문을 조사 후 Kr을