Question

My code runs without any errors but it doesn't seem to be pulling any data from my SQL Server. When debugging I get the query string below. From my understanding it should select all from the table... let me know if I'm wrong I'm new to MVC thanks for the help

enter image description here

Connection String

<add name="RegionalSalesManConnection" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=01DEV\SQLDEV01;Database=Caplugs_Nav_Data;Trusted_Connection=Yes" />

RegionalSalesManConnection.cs:

public class RegionalSalesManConnection : DbContext
{
    public RegionalSalesManConnection() : base("RegionalSalesManConnection") { }

    public DbSet<RegionalSalesManagers> RegionalManagers { get; set; }
}

RegionalSalesManagers.cs:

public class RegionalSalesManagers
{
    [Key]
    public string   Code { get; set; }
    public string Name { get; set; }
}

Index.cshtml:

@model IEnumerable<MvcMobile.Models.RegionalSalesManagers>

<ul data-role="listview" data-filter="true">
    @foreach(var item in Model) {
        <li>@item.Code, @item.Name</li>      
    }
</ul>

HomeController.cs:

private RegionalSalesManConnection db;

  public HomeController()
  {
     db = new RegionalSalesManConnection();
  }

  public ViewResult Index() {

  ViewBag.NumSessions = Sessions.All.Count;
  var model = db.RegionalManagers.ToList();

     return View(model);
 }
Was it helpful?

Solution

As you are using Code First are you dropping and recreating the database on every load? If so are you seeding any data into the table in question?

Edit: Seeding data

Here's an example of a Database Initializer class that will seed data:

public class DatabaseInitializer : DropCreateDatabaseAlways<NameOfContext>
{
    protected override void Seed(NameOfContext context)
    {
        SeedTestData(context);
        base.Seed(context);
    }

    private static void SeedTestData(NameOfContext context)
    {
        var item = new Item
        {
            Id = 1
        }
        context.DatabaseObjectBeingAddedTo.Add(item);
    }
}

Then in your global.asax file add the following to your Application_Start() method:

Database.SetInitializer(new DatabaseInitializer());

Second update, here is how you declare your context (linked to your database connection in your web.config via its name attribute) and the configuration for an entity (in this case RegionalSalesManager)

Context creation:

using Data.EntityConfigurations;
using Domain.Models;
using System.Data.Entity;

namespace Data.Contexts
{
    public class ApplicationContext : DbContext
    {
        /// <summary>
        /// Constructor
        /// </summary>
        public ApplicationContext()
            : base("ConnectionStringName")
        { }

        public DbSet<RegionalSalesManager> RegionalSalesManagers { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new RegionalSalesManagerConfiguration());
            base.OnModelCreating(modelBuilder);
        }
    }
}

Entity Configuration:

using Domain.Models;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace Data.EntityConfigurations
{
    public class RegionalSalesManagerConfiguration : EntityTypeConfiguration<RegionalSalesManager>
    {
        public RegionalSalesManagerConfiguration()
        {
            //Table
            ToTable("RegionalSalesManagers");

            //Primary key
            HasKey(e => e.Id);

            //Properties
            Property(e => e.Id).HasColumnName("RegionalSalesManagerId").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        }
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top