이의 나는이 모델을 가지고 있다고 가정 해 봅시다 여러 DbSets으로 이동 등엔티티 프레임 워크는
모델을 어떻게 "연결"합니까? 내가 묻는 것은 :
- DataContext를 만드는 방법은 무엇입니까? TextDocument에 대해서만?
- 예를 들어 ID 등을 모르는 상태에서 모든 이미지를 어떻게 얻을 수 있습니까?
이의 나는이 모델을 가지고 있다고 가정 해 봅시다 여러 DbSets으로 이동 등엔티티 프레임 워크는
모델을 어떻게 "연결"합니까? 내가 묻는 것은 :
질문이 명확하지 않습니다. 또한 모델이 약간 이상합니다. TextDocument
에는 Image
의 목록이 없습니다. 그러나 Image
은 모두 뒤로 탐색을 Paragraph
및 TextDocument
으로 포함합니다. 제 생각에는 Image
목록을 Paragraph
에 추가하고 TextDocument
을 Image
에서 제거해야한다고 생각합니다. 이 방법을 사용하면 Document
이 Pharagraph
초이고 Pharagraph
초가 Image
초가됩니다.
public class TextDocument
{
public int Id { get; set; }
public string Name { get; set; }
public virtual List<Paragraph> Paragraphs { get; set; }
}
public class Paragraph
{
public virtual TextDocument Document { get; set; }
public int Order { get; set; }
public string Text { get; set; }
public virtual List<Image> Images { get; set; }
}
public class Image
{
public virtual Paragraph Paragraph {get; set; }
public string Url { get; set }
}
컨텍스트를 만들려면 DbContext에서 파생되는 클래스를 만들고 엔티티 세트를 추가하십시오.
id가 3 인 특정 텍스트 문서의 이미지를 가져올 수 있습니다.
using(MyContext context = new MyContext())
{
var temp = context.TextDocuments.Include("Paragraph.Image").Where(q => q.Id == 3);
var imageList = temp.Paragraphs.Select(q => q.Images).ToList();
}
모든 이미지를 선택하려면;
EF 코드 우선에 대한 유용한 자습서가있는 this blog 게시물을 참조하십시오.
올바른 방향으로 모델을 연결 한 것 같습니다. 이 클래스 정의에 문제없이 속성을 탐색 할 수 있다고 가정합니다.
단락 중 하나는 단락 및 이미지 클래스의 기본 키 정의 (Id)입니다.
편집 1 :
당신은 당신 DbContext에
public DbSet<TextDocument> {get;set;}
을 추가 할 수 있습니다, 그래서 당신은 이미지를 아래로 이동 할 수 있습니다. 마찬가지로 DbContext에 Image 용 DbSet 만 배치 할 수 있으며 TextDocument까지 탐색 할 수 있어야합니다. 달성하고자하는 것은 분명하지 않습니다. 편집 2 :
public class Paragraph
{
public int Id {get; set;} // add this
public virtual List<Images> Images {get; set;} // and add this
public virtual TextDocument Document { get; set; }
public int Order { get; set; }
public string Text { get; set; }
}
답장을 보내 주셔서 감사합니다. 질문을 수정했습니다. – josefpospisil0
고맙습니다. 내 문제를 해결합니다! LINQ Include 명령에 대해 알지 못했지만 이제는 의미가 있습니다! – josefpospisil0
@ josefpospisil0 질문을 업데이트했습니다. – daryal
고맙습니다. 그게 내가 원하는 것입니다. – josefpospisil0