2

나는 asp.net 응용 프로그램에서 일하고 있습니다. 데이터베이스 관련 모델과 linq 쿼리를 디자인하는 데 도움이 필요합니다.asp.net MVC3 응용 프로그램 흐름

나는 세 개의 테이블과 두 개의 조회 테이블을 가지고 있습니다. 기본 키로

1) 제품 헤더 (제품 헤더 이드) 2) 제품 상세 (이것은 3) 생성물 부착 (이것은 외부 키로 제품 상세 ID)

를 가지고 외부 키로 제품 헤더 ID)를 갖는다 이제 DB에 레코드를 삽입해야합니다.

a) 하나의 제품 헤더 레코드에는 여러 개의 제품 세부 레코드 이있을 수 있습니다. b) 여러 제품 세부 레코드의 경우, 여러 개의 첨부 파일이있을 수 있습니다.

각 테이블마다 세 개의 엔티티를 만들었습니다. 제품 헤더에는 사용자 테이블과 기록 테이블의 두 가지 키가 있습니다. 하지만 볼 때 키 대신 사용자 이름을 표시해야합니다. 이 모든 엔티티 클래스를 속성으로 유지할 뷰 모델 클래스를 만들고 첫 번째 레코드가 제품 헤더에 삽입되고 제품 세부 정보가 삽입 된 다음 제품 첨부 파일에 삽입되는지 확인하려면 어떻게해야합니까?

좋습니다.

감사

답변

1

이 작업을 수행 할 수있는 쉬운 방법은 EF와 함께 제공되는 새로운 코드 첫 번째 기능을 사용하는 것입니다 4.1

당신은 당신의 "실체"과 같이 만들 수 있습니다

:

public class ProductHeader 
{ 
    public int ID {get; set;} 

    public virtual ICollection<ProductDetail> ProductDetails {get; set;} 

    //Other properties 
} 

public class ProductDetail 
{ 
    public int ID {get; set;} 

    public virtual ICollection<ProductAttachment> ProductAttachments {get; set;} 

    //Other properties 
} 

public class ProductAttachment 
{ 
    public int ID {get; set;} 

    // you can have a navigation property here for the user, this allows you to access his name 
    public virtual User User {get; set;} 
    //Other properties 
} 

public class MyContext:DbContext 
{ 
    public DbSet<ProductHeader> ProductHeaders {get; set;} 
    public DbSet<ProductDetail> ProductDetails {get; set;} 
    public DbSet<ProductAttachment> ProductAttachment {get; set;} 
} 

를 들어 삽입 순서는 ProductDetails 및 ProductAttachments를 추가 한 후 ProductHeader를 추가하기 만하면 EF가 처리합니다.

편집 : 여기 ProductHeader을 추가하기위한 샘플 코드입니다 :

var context=new MyContext(); 
var ph=new ProductHeader(); 
ph.User=user; 
var pd=new ProductDetail(); 
pd.ProductAttachments.Add(new ProductAttachment()); 
ph.ProductDetails.Add(pd); 
context.ProductHeaders.Add(ph); 
context.SaveChanges(); 

희망이 도움이됩니다.

+0

다른 제품 앞에 productheader를 추가하고 새로 생성 된 ID를 하위 엔티티에 사용해야합니다. 어떻게해야합니까? – DotnetSparrow

+0

@DotnetSparrow - EF는 모델 정의가 해당 엔티티와 적절하게 관련되어있는 한이를 처리합니다. –

+0

@DotnetSparrow : "수동으로"할 필요는 없습니다. ProductHeader를 추가하는 방법을 보여주기 위해 내 대답을 업데이트했습니다. – AbdouMoumen