2009-05-12 6 views
0

Je suis nouveau dans asp.net mvc. J'utilise Linq pour Sql et j'essaie de tout faire de façon lâche.asp.net mvc 1 à plusieurs messages de sauvegarde et de téléchargement

J'ai deux tables:

  1. Nouvelles
  2. NewsFiles

Ce que je suis en train de faire est d'économiser nouvelles et télécharger ses fichiers en même temps.

Comment puis-je créer une nouvelle en conjonction avec ses fichiers en l'enregistrant dans la table NewsFiles? Le modèle Linq to Sql est Ok, il inclut l'objet NewsFile to News.

Mon béton classe repository pour la table Nouvelles (noticia en portugais):

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 
    } 
} 

Regardez ce n'est pas toute mention à l'objet newsfile.

Répondre

5

Une forte conseil: upload/joindre le fichier (s) après le dossier 'joindre cible' a été créé.

J'ai une situation similaire où j'ai (bien presque le même en fait) l'objet 'Annonce' auquel je peux joindre une image ou une pièce jointe PDF. Mon idée originale était de permettre l'affichage de la nouvelle annonce (titre, catégorie, corps, etc) avec le fichier à télécharger. Maintenant, j'essayais de concevoir pour le téléchargement de nombreux fichiers en même temps (et des réponses intelligentes/validation pour les téléchargements échoués) .. mais le point est: cette approche était trop difficile. Faites-vous une faveur et demandez à l'utilisateur de créer l'enregistrement en premier, puis de joindre/télécharger le (s) fichier (s) après. Avoir l'enregistrement de la table de clé primaire présente rendra également les choses plus faciles.

EDIT: Plus d'infos sur les fichiers et les téléchargements:

-je utiliser un objet File pour stocker des fichiers dans mon db (donc oui je vais avoir besoin d'un champ binaire/image pour l'byte[]). Ensuite, j'ai d'autres objets qui représentent des fichiers concrets, comme Image et PdfDoc qui héritent de File - ils comprennent d'autres propriétés (comme la largeur et la hauteur pour le type Image). J'ai une vue partielle qui rend un contrôle de téléchargement réutilisable à la vue de détail qui, lors de la soumission des messages aux méthodes AttachImage() ou AttachPdfDoc() pour le Announcement (après avoir été créé - voir ci-dessus). La couche Service s'occupe du stockage des fichiers, etc. après validation et relie les objets. Ensuite, la vue détaillée est rechargée et les fichiers joints sont listés prêts à être téléchargés par le public. (NB: Ceci est fortement résumé BTW - Je permet également seulement les contrôles d'édition (formulaire de téléchargement) sur la vue de détail pour les utilisateurs authentifiés)

+1

Merci pour le conseil. Je vais inclure une action dans la liste pour attacher des fichiers à la table des nouvelles. Cordialement John –

Questions connexes