ASP .NET MVC utilizarea a doua baze de date

Salutare tuturor!
Lucrez la un proiect dupa modelul MVC. Am folosit template-ul de la Visual Studio pentru autentificare/inregistrare selectand “Individual user accounts” la crearea proiectului.
Intrebarea mea este, ar trebui sa folosesc aceeasi baza de date in care sunt stocate datele de login/register pentru alte date ? Sau ar trebui sa creez o noua baza de date pentru stocarea altor date. Multumesc anticipat!

Poti sa folosesti o singura baza de date. Iti faci un tabel users sau cum vrei sa se cheme.
Nu am mai lucrat cu VS, dar mi se pare ca acel template contine cod cu care poti sa faci direct logare cu facebook, google etc.

Vezi ce cere clientul. Pentru simplitate ramai pe o singura baza de date.

Multumesc pentru raspunsuri!.

Cosmin_Popescu da, pot sa fac logare cu facebook, google, twitter parca si mai era ceva.

alexjorj acest proiect e de fapt lucrarea mea de licenta. O aplicatie web unde se pot posta anunturi.
Sa inteleg ca pot sa memorez in aceeasi baza de date si detaliile anunturilor, inclusiv poze ?

Pai da
Baza de date tine date :slight_smile:
Pt poze, poti sa tii calea unde sunt stocate.

Pentru stocarea imaginilor, poti folosi blob storage (in cloud sau emulator).
In baza de date stochezi doar ruta sau un identificator al imaginii.

Vad ca pomenesti de logare cu facebook etc. Nu cumva intrebarea ta e daca sa lucrezi cu doua contexte si nu cu doua baze de date? Ca de obicei asta e problema, integrarea contextului care se ocupa de useri cu cel pe care-l folosesti sa faci alter query-uri.

Nu, ma refeream la doua baze de date. Chiar am creat ce-a de-a doua bd, dar dupa raspunsurile primite am sters-o si am ramas pe una singura, cea in care sunt stocate si datele.

Mi-a mai recomandat cineva sa ma folosesc de blob pentru stocarea imaginilor, o sa ma interesez cum functioneaza.

Multumesc! :slight_smile:

Ca sa nu mai creez un topic nou, pun aici aceasta intrebare.
De exemplu am o pagina imi care imi afiseaza toate anunturile de pe site(luate din db). Vreau sa imi impara informatia in mai multe pagini, sa zicem 12 anunturi pe pagina. Deci daca in bd sunt 40 de anunturi vor fi 4 pagini.
Cel mai probabil sunt ceva template-uri oferite de microsoft pentru asa ceva, dar nu stiu niste cuvinte cheie sau ceva dupa care sa caut mai multe informatii.

Faci paginare

1 Like

Intampin o noua problema. Nu reusesc sa incarc imaginea in Blob Storage.

Aici am partea de cod din Controller care ar fi trebuie sa faca asta.

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(AdViewModel model)
        {
            if (ModelState.IsValid)
            {
                CreateAd(model.Title,
                    model.Description,
                    model.Location);
                return RedirectToAction("ViewAds");

            }

            return View();
        }

        [HttpPost]
        public async Task<ActionResult> Upload(HttpPostedFileBase photo)
        {
            var imageUrl = await imageService.UploadImageAsync(photo);
            TempData["LatestImage"] = imageUrl.ToString();
            return View();
        }

partea cu imageService.UploadImageAsync(photo) functioneaza 100%, am testat-o si conexiunea la blob storage se realizeaza cu succes(daca e nevoie pun si codul in care am testat)

Aici am View-ul, adica Create.cshtml

@model LostPet.Models.AdViewModel

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="container">
    <h2>Create</h2>


    @using (Html.BeginForm("Create", "Ad", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        @Html.AntiForgeryToken()

        <div class="form-horizontal">
            <h4>AdViewModel</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })

            <div class="form-group">
                @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
                </div>
            </div>


            <div class="form-group">
                @Html.LabelFor(model => model.Location, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => model.Location, new { htmlAttributes = new { @class = "form-control" } })
                    @Html.ValidationMessageFor(model => model.Location, "", new { @class = "text-danger" })
                </div>
            </div>

            @using (Html.BeginForm("Upload", "Ad", FormMethod.Post, new { enctype = "multipart/form-data" }))
            {
                <fieldset class="form-horizontal">
                    <div class="form-group">
                        <label class="control-label col-md-2" for="Photo">Photo</label>
                        <div class="col-md-10">
                            <input type="file" name="photo" />
                        </div>
                    </div>
                    
                </fieldset>

            }

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>


    }

    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
</div>

Oare ce e gresit?

Iti intra pe metoda de Upload?

Nu cred ca intra, nu stiu de ce. Am facut unele modificari, poza este urcata in storage account, dar dupa ce apasa butonul create am urmatoarea eroare:

An asynchronous module or handler completed while an asynchronous operation was still pending.

aici e noul cod

[HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Create(AdViewModel model, HttpPostedFileBase photo)
        {

            try
            {
                if (ModelState.IsValid)
                {
                    CreateAd(model.Title,
                        model.Description,
                        model.Location);


                    return RedirectToAction("ViewAds");

                }

                return View();
            }
            finally
            {
                Upload(photo);
            }
        }

        [HttpPost]
        public async void Upload(HttpPostedFileBase photo)
        {
            var imageUrl = await imageService.UploadImageAsync(photo);
            TempData["LatestImage"] = imageUrl.ToString();
        }

Cred ca trebuie sa pui si un await pe acolo. Din ce stiu orice metoda async, are nevoie de un await

1 Like

Asta a fost, multumesc mult! a trebuit sa pun await Upload(photo), iar mai jos sa schimb din
public async void Upload in public async Task Upload
Acum incepe bataia de cap sa descarc imaginea din storage.

Eu zic că te complici. Mai bine salvezi imaginea pe disk și ții calea către ea in baza de date.

Eu m-am gandit sa le salvez in storage account si in baza de date sa tin link-ul catre imagine.
Inafara de locul in care sunt stocate, este vreo diferenta intre ce ai zis tu si ce fac eu?

Am văzut “blob” pe undeva și am zis că se refera la tipul de date blob. My bad, nu-s familiar cu Azure/.NET

Este cam la fel.
In baza de date o sa ai link-ul catre acea imagine. Numai ca trebuie sa ai conectivitate la Internet ca sa afisezi pozele.

Multumescc pentru raspunsuri! In zilele noastre nu cred ca se mai pune problema unei conexiuni la internet :slight_smile:
Daca o sa mai intampin probleme le voi posta in continuare, ca sa nu mai deschid alt topic.