저는 간단한 Dropbox와 유사한 응용 프로그램에서 ASP.NET MVC에 대해 배우고 있습니다. 그러나 페이지가 잘 돌아가기 전에도 나는 꼼짝 못하게되었습니다. 거기에는 너무 많은 정보가있어 나무에 대한 숲을 더 이상 볼 수 없습니다.ASP.NET MVC에서 두 테이블을 결합하는 적절한 방법은 무엇입니까?
내 상황 :
내가 한 페이지에 어떤 사람에 속하는 특정 폴더에있는 모든 파일을 표시 할. 나는 데이터베이스를 미리 설계하고 그로부터 Code First EF 모델을 생성했다. 데이터베이스의 관련 부분은 다음과 같습니다. AspNetUsers
은 MVC5 ID의 일부입니다. 내 테이블이 TADModels에서 구현되는 동안 Identity
이 내 자신의 테이블에 연결하는 것이 가장 어려운 부분 인 것 같습니다.
namespace TAD.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("FileTree")]
public partial class FileTree
{
[Key]
public string FolderID { get; set; }
[Required]
[StringLength(128)]
public string UserID { get; set; }
[Required]
[StringLength(255)]
public string FolderName { get; set; }
[Required]
[StringLength(255)]
public string FolderPath { get; set; }
public virtual ICollection<File> Files { get; set; }
public virtual ApplicationUser user { get; set; }
}
}
: 상기 자습서 중 하나에 따르면
SELECT f.FileName, f.FileSize
FROM Files f
INNER JOIN FileTree ft ON ft.FolderID = f.FolderID
INNER JOIN AspNetUsers u ON ft.UserID = u.Id
WHERE u.id = @id AND ft.FolderPath = @path;
이, 내가의 라인을 따라 뭔가를 할 수 있어야 해요 : 나는 기본적으로 그냥 다음 쿼리를 실행하기 위해 노력하고있어 파일 콜렉션은 경로와 연관된 파일을 찾고 사용자는 경로와 연관된 사용자를 찾는다. 그러나 스캐 폴딩 중에는 TAD.Models.IdentityUserRole: EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType'
줄에 오류가 있습니다. 내가 생각하고있는 것은 ApplicationUSer user
이 질문은 나에게도 매우 혼란 스럽다. 나는 단순히 내가 무엇을 찾고 있는지 모른다. 내가 언급 한 자습서는 나의 필요에 너무 단순한 반면, 다른 정보는 너무 많이 발전했다.
편집 :
namespace TAD.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
public partial class File
{
[Key]
public string FileID { get; set; }
[Required]
[StringLength(128)]
public string UserID { get; set; }
[Required]
[StringLength(128)]
public string FolderID { get; set; }
[Required]
[StringLength(255)]
public string FileName { get; set; }
public decimal FileSize { get; set; }
public bool IsPublic { get; set; }
public virtual ApplicationUser user { get; set; }
public virtual FileTree folder { get; set; }
}
}
무엇 당신의'File' 모델은 어떻게 구성 되나요? LINQ – beautifulcoder
@beautifulcoder를 통해 수동으로 수행 할 수 있습니다. 내 File 클래스가 추가되었습니다. Key annotation은 아래 답변 중 하나에서 제안되었으며 실제로 필요한지 전혀 알 수 없습니다. –
아이덴티티 모델을 쉽게 상속 받아 자신의 속성을 추가 할 수 있습니다! 이것은 다소 도움이 될 수 있습니다 :'public class MyUser : IdentityUser {}' –