0

我是 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 对象的任何提及。

4

1 回答 1

5

强烈建议:在创建“附加目标”记录上传/附加文件。

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

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

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

于 2009-05-12T05:57:14.143 回答