【问题标题】:EntityFramework Code First automatically setting the value of a public propertyEntityFramework Code First 自动设置公共属性的值
【发布时间】:2013-06-25 21:21:17
【问题描述】:

我正在构建一个 ASP.NET MVC 4 应用程序,它允许用户将大量图像上传到服务器。每个图像都会关联某些实体,例如 Product 实体将与产品图像关联,Category 实体将与类别图像关联。

我正在我的架构中创建一个表来记录所有上传的文件,其中包含一个字符串“Ref”,每当用户想要对文件进行操作时,我都会解析它,比如删除文件。这样,当用户想要删除文件时,我会简单地将架构中的文件标记为删除,并且每天一次我可以通过批量删除所有标记的文件来“清理”服务器上传的文件。

例如文件image.jpg作为产品图片上传,我将在参考标签image productID 4中有一个表示这是productID为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; }
}

有没有办法声明某些公共属性在设置其他属性时自动设置?例如,如果上传的文件类型是图像(即每当我设置 IsImage = true),我想添加自动设置的 ImageWidth 和 ImageHeight 属性

【问题讨论】:

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


    【解决方案1】:

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

    设置相关属性的逻辑不应该是模型的一部分,而是将 IsImage 属性设置为 true 的服务的逻辑。因此,只需在此处设置其他相关属性即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多