0

I have problems to connect my model with database, I was reading tutorials, but any example works.

My files:

Web Config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->
<configuration>
  <connectionStrings>
    <add name="CancionContext" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Canciones.mdf;User Instance=true" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>
    <roleManager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Cancion.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace BibliotecaMusica.Models
{
    public class Cancion
    {
        public int ID { get; set; }
        public string Nombre { get; set; }
        public string Autor { get; set; }
    }

    public class CancionContext : DbContext
    {
        public DbSet<Cancion> Canciones { get; set; }
    }
}

CancionesController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BibliotecaMusica.Models;

namespace BibliotecaMusica.Controllers
{
    public class CancionesController : Controller
    {

        CancionContext db = new CancionContext();

        public ViewResult Index()
        {
            return View(db.Canciones.ToList());
        }


    }
}

View Index of CancionesController

 @model IEnumerable<BibliotecaMusica.Models.Cancion>

    @{
        ViewBag.Title = "Index";
    }

    <h2>Index</h2>

    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
        <tr>
            <th></th>
            <th>
                Nombre
            </th>
            <th>
                Autor
            </th>
        </tr>

    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
                @Html.ActionLink("Details", "Details", new { id=item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.ID })
            </td>
            <td>
                @item.Nombre
            </td>
            <td>
                @item.Autor
            </td>
        </tr>
    }

    </table>

The database Canciones.mdf is already created and the table Cancion is created too. I get the following exception EntityCommandExecution was unhandled by user code

In the browser the message is :
Invalid object name 'dbo.Cancions'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'dbo.Cancions'.

Source Error:


Line 17:         public ViewResult Index()
Line 18:         {
Line 19:             return View(db.Canciones.ToList());
Line 20:         }
Line 21: 

I don´t know what is wrong with my project.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Alexander Ceballos
  • 750
  • 2
  • 20
  • 36
  • possible duplicate of [SqlException (0x80131904): Invalid object name 'dbo.Categories'](http://stackoverflow.com/questions/5374482/sqlexception-0x80131904-invalid-object-name-dbo-categories) – Sean Carroll May 05 '14 at 00:47

1 Answers1

0

I think your problem is in your connection string. Check this answer

https://stackoverflow.com/a/173375/3467053

Or in the server explorer you can open a new connection to your db and check the connection string that the wizzard generates. Hope this helps.

Community
  • 1
  • 1
josleugim
  • 13
  • 3
  • Thanks, but the problem that I found is that I don´t know why if my model is 'Cancion' Visual Studio appends the letter 's' and then the model is converted to Cancions. Now is working but I have to rename my model to 'Cancions' – Alexander Ceballos May 06 '14 at 14:42