我正在构建一个ASP.NET MVC 4应用程序,允许用户将大量图像上传到服务器。对于每个图像,某些实体将被关联,例如,产品实体将与产品图像相关联,而类别实体将与类别图像相关联。
我在我的模式中创建一个表来保存所有上传文件的记录,其中包含字符串'Ref',每当用户想要对文件执行操作时我将解析该文件,例如删除文件。这样,当用户想要删除文件时,我将简单地标记模式中的文件以进行删除,并且每天我可以通过批量删除所有标记的文件来“清理”服务器的上传文件。
例如,文件image.jpg
作为产品图片上传,我将在ref标记image productID 4
中显示这是产品ID为4的产品的图片。
这是实施上传文件处理的正确方法还是有更好的方法吗?这是“引用”与此文件关联的其他实体的正确方法吗?
这是我的codefirst实体:
public class UploadedFile
{
[Key]
public int ID { get; set; }
public string RelativePath { get; set; }
public string AbsolutePath { get; set; }
public string Ref { get; set; }
public DateTime UploadedOn { get; set; }
public bool IsMarkedForDeletion { get; set; }
public bool IsImage { get; set; }
}
有没有办法声明某些公共属性在设置其他属性时自动设置?例如,我想添加ImageWidth&如果上传的文件类型是图像(即每当我设置IsImage = true)时自动设置的ImageHeight属性
答案 0 :(得分:0)
使用Ref列是可以的,但是如果有一个额外的列指定引用的类型会更有利,在您的情况下它将是一个产品,但您可能希望使用相同的表引用不同类型的对象。
设置相关属性的逻辑不应该是Model的一部分,而应该是将IsImage属性设置为true的服务逻辑。所以只需在那里设置其他相关属性。