EntityFramework Code首先自动设置公共属性的值

时间:2013-06-25 21:21:17

标签: entity-framework asp.net-mvc-4 file-upload ef-code-first

我正在构建一个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属性

1 个答案:

答案 0 :(得分:0)

使用Ref列是可以的,但是如果有一个额外的列指定引用的类型会更有利,在您的情况下它将是一个产品,但您可能希望使用相同的表引用不同类型的对象。

设置相关属性的逻辑不应该是Model的一部分,而应该是将IsImage属性设置为true的服务逻辑。所以只需在那里设置其他相关属性。