2009-05-12 4 views
0

Я новичок в asp.net mvc.asp.net mvc 1 to many save post and upload files

Я использую Linq для Sql и пытаюсь сделать все слабо связанным.

Я две таблицы:

  1. Новости
  2. NewsFiles

То, что я пытаюсь сделать, это сохранить новости и загружать свои файлы одновременно.

Как создать новость вместе со своими файлами, сохранив ее в таблице NewsFiles?

Модель Linq to Sql в порядке, она включает объект NewsFile to 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.

ответ

5

сильных совета: загрузка/прикрепить файл (ы) после была создана «прикрепить мишень» запись.

У меня есть аналогичная ситуация, когда у меня есть (ну почти то же самое фактически) объект «Объявление», к которому я могу прикрепить изображение или вложение PDF. Моя первоначальная идея состояла в том, чтобы разрешить публикацию нового объявления (название, категория, тело и т. Д.) с файл для загрузки. Теперь, по общему признанию, я пытался создать для загрузки много файлов одновременно (и умные ответы/валидация для неудачных загрузок) .. но дело в том, что этот подход был слишком сложным. Сделайте себе одолжение и сначала создайте запись, затем присоедините/загрузите файл (ы) после. Наличие первичной записи таблицы ключей также облегчит ситуацию.

EDIT: Более подробная информация о файлах и отправках:

Я использую File объект для хранения файлов в моем дб (да так, я буду нуждаться в двоичное поле/изображений для byte[]). Тогда у меня есть другие объекты, которые представляют конкретные файлы, такие как Image и PdfDoc, которые наследуют от File - они включают в себя другие свойства (такие как Ширина и Высота для типа Image). У меня есть частичное представление, которое выводит повторно используемый элемент управления загрузкой на подробное представление, которое при отправке сообщений в методы AttachImage() или AttachPdfDoc() для конкретного Announcement (после того, как оно было создано - см. Выше). Слой службы отслеживает сохранение файлов и т. Д. После проверки и связывает объекты. Затем перезагружается подробный просмотр, и вложенные файлы перечислены в готовом виде для загрузки. (NB: Это сильно суммировано btw - я также разрешаю только элементы управления редактированием (выгрузка формы) на подробном представлении для прошедших проверку подлинности пользователей)

+1

Спасибо за подсказку. Я включу действие в список для прикрепления файлов к таблице новостей. С уважением John –