ASP.NET MVC & Entity Framework med MySQL

by Reager 8. August 2009 01:11

För denna artikel behövs

Börja med att se till så att du har allt det ovanstående installerat och klart innan du går vidare. Installerar du allt på nytt är det även rekommenderat att du startar om datorn. Öppna sedan Visual Studio och skapa en ny ASP.NET MVC Web Application. Börja med att ta bort allt i mapparna Controllers och Views utom mappen Shared men töm även denna så att vi kan börja från scratch. Nästa steg är att skapa tabellen som vi ska använda. Jag valde att kalla min tabell för blogg_post. Denna tabell ska se ut på följande vis

Fältnamn Typ Övrigt
id INTEGER Primary Key
posttitle VARCHAR(100)  
postbody TEXT  
dateposted DATETIME  

Sedan skapar vi vår entitydatamodel-fil. Detta gör du genom att högerklicka på mappen Models –> add –> New Item.

image

Välj ADO.NET Entity Data Model

image

Knappa in ett passande namn och klicka sedan på Add. I nästa steg väljer du “Generate from Database” och klickar next.

I nästa fönster som kommer upp klickar du på “New Connection” och väljer “MySql Database” och klickar på “Continue”.

image

Fyll i dina uppgifter till MySQL-databasen och klicka på “OK”. Om Visual Studio frågar om du vill spara lösenordet i din connection-string så är det bara att välja “Yes” och klicka sedan på “Next”.

I nästa steg så expanderar du fliken “Tables” och klickar i din tabell som du skapade tidigare och klickar på “Finish”.

image

Din datamodell skapas då och “we are ready to roll”.

Högerklicka på mappen “Controllers”, välj sedan “Add” –> “Controller” och döp denna till “HomeController”. Klicka även i rutan “Add action methods for……” och klicka på “OK”.

image

I vår Index-action så kommer vi att hämta samtliga inlägg i vår tabell och visa dem. Börja med att importera din namnrymd som innehåller alla modeller. Vanligtvis heter denna projektnamn.Models. Importera även System.Data.Linq.

using MVC_EF_MySQL.Models;
using System.Data.Linq;

Sedan i vår Index-action skriver vi följande kod för  att hämta alla inlägg.

using(web37831_devEntities context = new web37831_devEntities())
{
    List<blogg_post> post = (from p in context.blogg_post
                             select p).ToList();

    return View(post);
}

Nästa steg är att skapa vår vy. Detta gör vi genom att högerklicka på vår Index-action och välja “Add View”.

 image

Låt vynamnet vara och välj att den ska vara starkt typad  (strongly-typed) mot i mitt fall klassen MVC_EF_MySQL.Models.blogg_post. I listan för “View Content” väljer du “List”. Klicka sedan på “Add”.

image

Nästa steg är att skapa sidan för att skapa ett inlägg. Om du kollar i “HomeController.cs” så kan du se att det finns 2st “Create”-actions. Den första levererar bara själva vyn och den andra anropas endast om det är en “Post” som sker mot servern. I denna andra “Create”-action ska vi nu skriva lite kod för att spara ett inlägg. Denna ser ut som följer.

using (web37831_devEntities context = new web37831_devEntities())
{
    blogg_post post = new blogg_post();
    post.posttitle = collection["PostTitle"];
    post.postbody = collection["PostBody"];
    post.dateposted =DateTime.Now;
    context.AddToblogg_post(post);
    context.SaveChanges();
}

return RedirectToAction("Index");

Upprepa nu stegen som du tog för att skapa Index-vyn men nu istället för “Create” och klicka på “Add”.

image

I denna fil så tar du bort de två fälten för ID och DatePosted då vi vill ange detta själva. Ändra även från Html.TextBox till Html.TextArea på PostBody. Detta gör att det renderas en textarea istället för en textbox. Du bör ha kvar något som ut i stil med detta innanför using(Html.BeginForm())

<fieldset>
    <legend>Fields</legend>

    <p>
        <label for="postbody">postbody:</label>
        <%= Html.TextArea("postbody") %>
        <%= Html.ValidationMessage("postbody", "*") %>
    </p>
    <p>
        <label for="posttitle">posttitle:</label>
        <%= Html.TextBox("posttitle") %>
        <%= Html.ValidationMessage("posttitle", "*") %>
    </p>
    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

Det var allt, du kan nu provköra projektet. Förstasidan listar dina inlägg och anger du sökvägen /home/create så kan du även skriva inlägg. Vill du att det ska se snyggare ut är det bara att redigera koden i dina vyer.

Så enkelt var det att komma igång med ASP.NET MVC och Entity Framwork med MySQL.

På återseende.

Tags:

Comments

8/12/2009 9:33:32 AM #

Martin

Hej,

Mkt intressant guide då den eliminerar behovet av MSSQL server. Jag har dock problem att installera MySQL .NET connector. Hur gör man det? Har rotat runt i den uppackade zip-filen men hittar inget vettigt och när jag kör solution-filen så får jag några felmeddelanden men får se projektet i Visual Studio. Vad gör jag för fel?

/Martin

Martin Sweden

8/21/2009 9:13:21 PM #

Reager

Om du laddar hem installern så går det automatiskt.

Reager Sweden

11/19/2009 10:00:19 PM #

trackback

Using MySQL with ASP.NET

Using MySQL with ASP.NET

Emil Backlund Blog

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

RecentComments

Comment RSS