2014-03-03 2 views
4

MVC 4에서 'Many to One Relationship'테이블을 처리하는 방법에 대해서는 배우지 않았으므로 나와 함께하시기 바랍니다.MVC 4에서 'Many to One'관계 처리 ASP.NET

내가 내 모델에서 생성 된 데이터베이스가 있으며 아래 이미지와 매우 유사하다 : 실제로 CRUD 작업을 작업하고, 그러나 enter image description here

은 약간 다릅니다 그래서 :(

I 내가 '정상'테이블을 처리하는 방법에 대한 나의 접근 방식을 가져다가 작동하도록했지만, 나는 할 수 없었다

여기 내 DAL은 다음과 같습니다.

public class ArticleEntities : DbContext 
{ 
    public DbSet<AgeGroup> AgeGroups { get; set; } 
    public DbSet<Disabilities> Disabilitiess { get; set; } 
    public DbSet<StrategyType> StrategyTypes { get; set; } 
    public DbSet<Article> Articles { get; set; } 
    public DbSet<UserProfile> Profiles { get; set; } 
    public DbSet<DataToArticle> DataToArticles { get; set; } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
    } 
} 

내가보기의 웹 사이트 관점에서

을 수행 할 무엇, 나는 제 테이블 의 생성 페이지 (보기)에 액세스하고있는 연령 집단, 장애 및 StrategyType에 대한 드롭 다운 목록을해야합니다. 또한 각 카테고리 (테이블 연령 그룹, 장애, 전략 유형)에 하나 이상의 값이 할당 될 수 있도록 더 많은 클릭 드롭 다운 목록 (예 : 더하기 기호)을 추가 할 수 있습니다. 기사에 대한 enter image description here

내 모델, 연령 집단은, 장애, StrategyType가 제대로 완료 나는이 줄을 추가 believe.I : 그들 모두에게

public virtual List<DataToArticle> AgeGroupToArticle { get; set; } 

이 그들에게 DataToArticle 테이블에 연결 할 수 있습니다. 나는 또한 DataToArticle 테이블에이 코드를 추가 :

내가 필요 할 생각,하지만 난이 알고있는 ArticleController에서 어떻게

을 모르는 무엇

public virtual AgeGroup AgeGroup { get; set; } 

    public virtual Disabilities Disabilities { get; set; } 

    public virtual StrategyType StrategyType { get; set; } 

추가 모든 추가를 다른 테이블의 정보를 그 안에 넣습니다. 나는 Linq를 사용하려고 시도했지만 아무 쓸모는 없지만 이런 식으로 할 수 있다고 확신한다.

또한 기사 작성보기에서 다른 테이블의 드롭 다운 목록에 표시해야하는 정보에 액세스 할 수 있어야합니다.

많은 관계 테이블이 하나도 없다면이 모든 것을 할 수 있습니다. 정말 저를 위해 모든 것을 바꿉니다.

+1

일대 다 문제는 ASP.NET MVC와 관련이 없습니다. 모든 ASP.NET MVC는 솔루션을위한 전달 메커니즘입니다. 콘솔 응용 프로그램에서도 이와 동일한 문제가 발생할 수 있습니다. 덧붙여 말하자면 우리가 누락 된 부분은 데이터 액세스를 위해 사용중인 것입니다. 엔티티 프레임 워크? Linq-to-SQL? 실제로 컨트롤러 코드와 데이터베이스에 연결하는 데 사용하는 코드를 확인해야합니다. 또한, 당신을 위해이 페이지를 만들 필요가있는 것처럼 들리지만, 그것은 큰 주문입니다. –

+0

그 태도, 나는 문제가 ASP.NET이라고 말하지 않았다 .... 나는 나를 위해 그것을 할 누군가를 요구하지 않는다. 나는이 문제와 관련된 온라인상의 어떤 것도 (8 시간 이내에) 발견 할 수 없다. 나는 단지 통찰력을 원한다. 나는 이것을 쉽게 돌릴 수 있고 각 카테고리별로 하나의 가치를 전달할 수 있지만, 그것은 단지 만족스러운 것이다. 나는 넘어 가고 싶다. 단지 자원이나 통찰력이 인정됩니다. –

+0

컨트롤러 코드를 확인해야합니다. 엔티티를 취소 할 때 어떤 문제가 발생합니까? –

답변

3

나는 당신을 버리고있는 부분은 모든 관계를 단일 테이블의 단일 행에 넣었다고 생각합니다. 관련 유형이 실제로 엔티티 일 필요가 있는지 또는 단순히 값인지 여부에 따라 처리 할 수있는 몇 가지 다른 방법이 있습니다. 단순히 값이있는 경우 이전 유형의 각 값 유형에 대한 2 차 테이블을 작성할 수 있습니다. 이 테이블에서 기사 ID를 외래 키로 지정하고 관련 값을 지정합니다. 이것이 내가 일대 다 (one-to-many) 관계를 유지하는 방법입니다.

관련된 값이 실제로 엔티티 인 경우 (제 생각에는 단순한 ID와 이름 이상으로 구성 될 것입니다), 키가있는 엔티티 유형 당 조인 테이블을 갖게됩니다 article id와 엔티티 ID로 구성됩니다.실제로 모델링하는 것은 기사와 각 엔티티 유형 간의 다 대다 관계입니다.

첫 번째 사례가 실제로 원하는 것으로 가정합니다. 그러면 기사에서 연령대, 장애 및 전략 유형에 대한 속성을 갖게됩니다.

public ICollection<AgeGroup> AgeGroups { get; set; } 
public ICollection<Disability> Disabilities { get; set; } 
public ICollection<StrategyType> StrategyTypes { get; set; } 

그리고 각 엔티티에 당신은 예를 들어 ID, 자료, 값, 플러스 (문서 ID를 통해) 관련 기사에 대한 참조,이 것 :

public class AgeGroup 
{ 
    public int Id { get; set; } 
    public int ArticleId { get; set; } 
    public string AgeName { get; set; } 

    public Article Article { get; set; } 
} 

Data model for article with multiple related age groups, disabilities, and strategy types

0

EF Code First를 사용하고 MVC에서 일대 다 관계 구현을 시작하기위한 기본 예제를 찾고 있다면 온라인에서 사용할 수있는 예제가 많이 있습니다. Here is one of them on asp.net/mvc.