我是 ASP.NET MVC 新手。

我正在使用 Linq to Sql 并尝试松散耦合地完成所有工作。

我有两张桌子:

  1. 消息
  2. 新闻档案

我想做的是保存新闻并同时上传其文件。

如何创建新闻并将其保存到 NewsFiles 表中?

Linq to Sql 模型是好的,它包括 NewsFile 对象到 News 对象。

我的新闻表的具体存储库类(葡萄牙语的 noticia):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MagixCMS.Models
{
    public class NoticiaRepository : INoticiaRepository
    {
        #region INoticiaRepository Members

        magixcmsEntities _entities = new magixcmsEntities();

        public noticia CreateNoticia(noticia noticiaToCreate)
        {
            _entities.AddTonoticiaSet(noticiaToCreate);
            _entities.SaveChanges();
            return noticiaToCreate;
        }

        public void DeletaNoticia(noticia noticiaToDelete)
        {
            var noticiaOriginal = GetNoticia(noticiaToDelete.Id);
            _entities.DeleteObject(noticiaOriginal);
            _entities.SaveChanges();
        }

        public noticia EditNoticia(noticia noticiaToEdit)
        {
            var noticiaOriginal = GetNoticia(noticiaToEdit.Id);
            _entities.ApplyPropertyChanges(noticiaToEdit.EntityKey.EntitySetName, noticiaToEdit);
            _entities.SaveChanges();
            return noticiaToEdit;
        }

        public noticia GetNoticia(int id)
        {
            return (from c in _entities.noticiaSet where c.Id == id select c).FirstOrDefault();
        }

        public IEnumerable<noticia> ListNoticias()
        {
            return _entities.noticiaSet.ToList();
        }

        #endregion
    }
}

看看这没有提到 NewsFile 对象。

有帮助吗?

解决方案

A 强的 忠告:上传/附加文件 “附加目标”记录已创建。

我有一个类似的情况,我有(实际上几乎相同)“公告”对象,我可以在其中附加图像或 PDF 附件。我最初的想法是允许发布新公告(标题、类别、正文等) 要上传的文件。现在,不可否认,我正在尝试设计同时上传许多文件(以及对失败上传的巧妙响应/验证)。但重点是:这个方法太难了。帮自己一个忙,让用户先创建记录,然后附加/上传文件。存在主键表记录也会使事情变得更容易。

编辑:有关文件和上传的更多信息:

我用一个 File 对象在我的数据库中存储文件(所以是的,我需要一个二进制/图像字段 byte[])。然后我有其他代表具体文件的对象,例如 ImagePdfDoc 继承自 File - 这些包括其他属性(例如宽度和高度) Image 类型)。我有一个部分视图,它向详细视图呈现可重用的上传控件,当将其提交到 AttachImage() 或者 AttachPdfDoc() 针对具体情况的方法 Announcement (创建后 - 见上文)。服务层负责在验证后存储文件等并链接对象。然后详细视图会重新加载,并且列出附件可供公众下载。(注意:顺便说一句,这是大量总结的 - 我也只允许经过身份验证的用户在详细视图上使用编辑控件(上传表单))

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top