Asp.net MVC 1 ко многим сохранение сообщений и загрузки файлов - PullRequest
0 голосов
/ 12 мая 2009

Я новичок в asp.net mvc.

Я использую Linq to 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.

1 Ответ

5 голосов
/ 12 мая 2009

A strong совет: загрузите / прикрепите файл (ы) после была создана запись 'attach target'.

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

РЕДАКТИРОВАТЬ: Больше информации о файлах и загрузках:

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

...