2009-06-25 3 views
2

나는 광고를 원하는 제품의 사진을 업로드 할 수있는 웹 사이트에서 일하고 있습니다. 사진을 웹 폴더에 저장하고 있습니다. 사진을 계속 참조하는 테이블에는 Identity 필드 (기본 키) 인 키 필드 photoid가 있습니다. 내가 Linq를 사용하고사진 및 데이터베이스

내 저장소는 다음과 같은 한 방법

Photo photo = rep.NewPhoto(); 
photo.Title="Some Title"; 
rep.InsertPhoto(photo); 
rep.SaveAll(); 

rep.SavePhoto(photo,uploadedPhoto); 
rep.SaveAll(); 

내 데이터 모델에 대한 SQL합니다. 이제 내 문제는, 내 파일을 photoyd에서 오는 이름으로 으로 저장하려면 rep.SaveAll()을 호출하여 새로운 작성한 photoid를 가져온 다음 으로 사진을 저장해야합니다. 그리고 SaveAll() 메서드를 호출하여 SavePhoto() 메서드의 변경 사항을 happend로 다시 업데이트해야합니다.

다른 옵션은 임의의 파일 번호로 파일을 먼저 저장 한 다음 사진 레코드를 한 번에 저장하는 것입니다.

두 번째 방법입니다. PHOTOID 사용하여 파일을 저장

Photo photo = rep.NewPhoto(); 
photo.Title="Some Title"; 
string filename = rep.SavePhoto(uploadedPhoto); 
photo.FileName=filename; 
rep.InsertPhoto(photo); 
rep.SaveAll(); 

사진을 쉽게 해당 ID를 사용하여로드 할 수있는 하나 개의 좋은 점을 가지고있다.

이러한 종류의 기능을 수행하는 좋은 방법은 무엇입니까?

도움말은 appritiate됩니다.

건배 Parminder

답변

2

두 번째 방법이 훨씬 효율적입니다. 다른 옵션은 응용 프로그램 계층에서 고유 한 (지침을 사용할 수 있음)을 만든 다음이를 키 DB 레코드로 사용하고 파일 이름과 동일하게 사용할 수 있습니다.

0

몇 가지가 :

1) 데이터베이스에서 VARBINARY (MAX로 사진)을 저장하는 것이 좋습니다. 백업 및 복원까지 사람들이 관리하는 것이 훨씬 쉬울 것이며 데이터베이스의 무결성이 더 좋습니다.

2) 원하는 것을 얻으려면 L2SQL Photo 클래스의 partial methods을 사용하는 것이 좋습니다. Photo 클래스의 Update 메서드를 변경하여 사진을 저장할 수 있어야합니다. 희망이 도움이됩니다.

2

최신 SQL Server를 사용하는 경우, 새 FILESTREAM 필드 형식으로 볼 수도 있습니다 :

http://technet.microsoft.com/en-us/library/bb933993.aspx 그것은 일은 정확히 이런 종류의

- 중 큰 모양을 얻으려고 노력 테이블 구조와 파일 시스템으로.

그 외에도, 나는 두 가지 저장이 필요하면 두 번째 저장 또는 SavePhoto가 실패 할 경우 일어날 일에 신경 쓰면 트랜잭션을 고려할 수도 있습니다.

관련 문제