Asp.net 照片和数据库
我在一个网站上工作,用户可以上传他们想做广告的产品的照片。 我正在将照片保存在web上的文件夹中。在我保存照片引用的表中,有一个键字段photoid,它是Identity字段(主键) 我的存储库有以下方法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();
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失败了,你可能想考虑一个交易。