Asp.net 照片和数据库

Asp.net 照片和数据库,asp.net,asp.net-mvc,file,upload,Asp.net,Asp.net Mvc,File,Upload,我在一个网站上工作,用户可以上传他们想做广告的产品的照片。 我正在将照片保存在web上的文件夹中。在我保存照片引用的表中,有一个键字段photoid,它是Identity字段(主键) 我的存储库有以下方法 Photo photo = rep.NewPhoto(); photo.Title="Some Title"; rep.InsertPhoto(photo); rep.SaveAll(); rep.SavePhoto(photo,uploadedPhoto); rep.SaveAll();

我在一个网站上工作,用户可以上传他们想做广告的产品的照片。 我正在将照片保存在web上的文件夹中。在我保存照片引用的表中,有一个键字段photoid,它是Identity字段(主键)

我的存储库有以下方法

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

rep.SavePhoto(photo,uploadedPhoto);
rep.SaveAll();
我正在为我的数据模型使用LINQtoSQL。 现在我的问题是,如果我想保存我的文件 使用来自photoid的名称,我必须给代表SaveAll()打电话 方法获取新创建的照片id,然后使用新id保存照片 然后我必须调用SaveAll()方法,用更改再次更新它 SavePhoto()方法中的happend

另一个选择是我先用一些随机文件号保存文件,然后一步保存照片记录

这是第二种方法

Photo photo = rep.NewPhoto();
photo.Title="Some Title";
string filename = rep.SavePhoto(uploadedPhoto);
photo.FileName=filename;
rep.InsertPhoto(photo); 
rep.SaveAll();
使用photoid保存文件有一个优点,使用photoid可以轻松加载照片

实现这种功能的好方法是什么

我们将感谢您的帮助

干杯 Parminder有几件事:

(p>1)考虑将照片存储为VARDION(MAX)在数据库中。这将使人们能够更轻松地管理备份和恢复,并有利于数据库的完整性


2)考虑使用L2SQL照片类来实现你想要的。您应该能够更改照片类的更新方法来保存照片。希望这有帮助。

第二种方法肯定更有效;其他选项可以是在应用程序层中创建一个唯一的字段(您可以使用GUID),然后将其用作密钥数据库记录,并与文件名相同。

如果您使用的是最新的SQL Server,您可能需要查看新的FILESTREAM字段类型:

正是为了这类事情——尝试将大的blob从表结构中取出并放到文件系统中

<> P>除此之外,我认为无论你走哪条路,你都有正确的想法——如果你需要两次保存,如果你关心如果第二次保存或SaveFIX失败了,你可能想考虑一个交易。