2010-02-18 6 views
14

Microsoft MVS 솔루션은 Microsoft SQL Server 2008과 함께 Entity Framework를 기반으로 구축되었습니다. 사용자가 파일을 업로드 할 수있는 기능을 만들어야합니다.엔티티 프레임 워크를 사용하여 데이터베이스에 파일 저장

내가하고 싶은 것은 :

  • 데이터베이스에 감지하고 해시 어떤 종류의를 통해 두 번 같은 파일을 업로드 할 수 없습니다
  • 솔루션을 파일을 저장하는 엔티티 프레임 워크를 사용하는 솔루션/체크섬 데이터베이스/테이블 디자인

답변

10

  • 팁 2008 데이터베이스가 use the FILESTREAM data type에있는 SQL 서버에서 파일을 저장하는 "오른쪽"방법. Entity Framework가이를 지원한다는 것을 알지 못하지만, 여러분은 확실히 어떤 일이 일어나는지 보려고 시도 할 수 있습니다.

    즉, 대부분 사람들이이 작업을 수행하면 파일을 데이터베이스에 저장하지 않습니다. 이렇게하면 웹 서버에서 직접 제공 할 수있는 파일을 제공하기 위해 ASP.NET과 데이터베이스 서버를 통과해야합니다. 또한 데이터베이스 및 사이트의 백업 그림을 다소 복잡하게 만들 수 있습니다. 따라서 MVC/Entity Framework에 파일을 업로드 할 때 데이터베이스에 파일 위치에 대한 참조 만 저장하고 파일 자체를 다른 위치에 저장합니다.

    분명히 당신에게 적합한 전략은 애플리케이션의 세부 사항에 달려 있습니다.

  • 40

    엔티티 모델에서 BLOB 데이터베이스 열을 byte[] 속성으로 매핑하십시오. 엔티티 개체의 해당 속성에 업로드 된 파일의 내용을 할당하고 변경 내용을 ObjectContext에 저장합니다.

    는 여기에 내가 포드 캐스트 위해 그것을 할 방법은 당신이 MD5CryptoServiceProvider 클래스

    +12

    그 답변에 어떤 문제가 있습니까? 최소한 downvote에 대한 이유를 줄 수 있습니까? 그게 내가 정말 싫어하는 한 가지 야. 설명없이 다운 버턴을 쓰는 사람들 ... 너무 쓸모가 없어. –

    +5

    아무 생각이 들지 않았지만, 문제를 해결하려면 +1을. :) –

    +4

    이것에 대한 나쁜 부분은 큰 파일이 스트림 대신 바이트 배열을 사용하여 RAM을 날려 버릴 수 있다는 것입니다. ( – jocull

    5

    를 사용하여 해시를 계산하려면 :

     
    
    ID  Title   Path     Summary    UploadDate 
    --- -----  --------    ----------------  ----------- 
    1  TestPodcast /Podcasts/ep1.mp3  A test podcast   2010-02-12 
    
    

    path 저장 팟 캐스트의 물리적 위치에 대한 참조를. 나는 파일을 업로드 부분을 다루는 File Uploads with ASP.NET MVC에 스콧 Hanselman에서 게시물을 사용했습니다.

    +0

    작은 응용 프로그램에서도 괜찮을 수는 있지만 백업 요구 사항이있는 복잡한 응용 프로그램과 파일이 시간이 지남에 따라 변하는 것으로 가정하면 특정 시점으로 돌아갈 수 없습니다. – ozz

    +1

    @Ozz 당신은 절대적으로 맞지만 시간이 지남에 따라 변경되는 파일은 아닙니다. 한 번 팟 캐스트를 릴리스하면 되돌아 가서 그 팟 캐스트를 덮어 쓰지 않는 것이 좋을 것입니다. –

    관련 문제