C# MVC代码第一个问题:从远程SQL Server获取数据

C# MVC代码第一个问题:从远程SQL Server获取数据,c#,sql-server,asp.net-mvc,ef-code-first,connection-string,C#,Sql Server,Asp.net Mvc,Ef Code First,Connection String,我的代码运行时没有任何错误,但它似乎没有从我的SQL Server中提取任何数据。调试时,我得到下面的查询字符串。根据我的理解,它应该从表中选择所有。。。如果我错了,请告诉我我是MVC新手,谢谢你的帮助 连接字符串 <add name="RegionalSalesManConnection" providerName="System.Data.SqlClient" connectionString="Server=01DEV\SQLDEV01;Database=C

我的代码运行时没有任何错误,但它似乎没有从我的SQL Server中提取任何数据。调试时,我得到下面的查询字符串。根据我的理解,它应该从表中选择所有。。。如果我错了,请告诉我我是MVC新手,谢谢你的帮助

连接字符串

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

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

    public DbSet<RegionalSalesManagers> RegionalManagers { get; set; }
}
public class RegionalSalesManagers
{
    [Key]
    public string   Code { get; set; }
    public string Name { get; set; }
}
private RegionalSalesManConnection db;

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

  public ViewResult Index() {

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

     return View(model);
 }
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>

当您首先使用代码时,是否在每次加载时删除并重新创建数据库?如果是这样的话,您是否将任何数据植入有问题的表中

编辑:种子设定数据

下面是一个数据库初始值设定项类的示例,该类将为数据设定种子:

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);
    }
}
第二次更新,以下是如何声明上下文(通过其名称属性链接到web.config中的数据库连接)和实体的配置(在本例中为RegionalSalesManager)

上下文创建:

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);
        }
    }
}
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);
        }
    }
}
使用Data.entityConfiguration;
使用领域模型;
使用System.Data.Entity;
名称空间数据.上下文
{
公共类应用程序上下文:DbContext
{
/// 
///建造师
/// 
公共应用程序上下文()
:base(“ConnectionString名称”)
{ }
公共数据库集{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
添加(新的RegionalSalesManagerConfiguration());
基于模型创建(modelBuilder);
}
}
}
实体配置:

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);
        }
    }
}
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);
        }
    }
}
使用Domain.Models;
使用System.ComponentModel.DataAnnotations.Schema;
使用System.Data.Entity.ModelConfiguration;
namespace Data.EntityConfiguration
{
公共类RegionalSalesManager配置:EntityTypeConfiguration
{
公共区域SalesManager配置()
{
//桌子
ToTable(“区域销售经理”);
//主键
HasKey(e=>e.Id);
//性质
属性(e=>e.Id).HasColumnName(“RegionalSalesManagerId”).hasDatabaseGenerateOption(DatabaseGenerateOption.Identity);
}
}
}

您确定模型中的“名称”字段只包含一个字符吗?啊,我没有注意到这一点,谢谢,但仍然是相同的问题。应用程序运行后,您可以使用SQL Server Management Studio查看相关表中的现有数据,并且该数据存在?不,它不会出现。我想我的问题是db从来没有在配置文件中填充过(ef是新的,所以我刚刚通过教程了解到这一点),我仍在尝试如何填充它。我已经添加了一个示例,说明如何在我的答案中植入数据,让我知道它是否有意义。我收到了错误“没有从“…RegionalSalesManager”到“System.Data.Entity.DbContext”的隐式引用转换,而且当前没有从我读取的数据中创建的数据库(应用程序中的数据)。这应该在我运行程序时自动创建。基本上,我现在试图完成的是从远程SQL server获取我的表并将其显示在网页上。我再次更新了答案,以显示如何在web.config中创建链接到数据库连接的上下文,然后通过配置文件将实体配置到数据库表中。在本例中,它有一列,即名为RegionalSalesManagerId的主键,该主键映射到RegionalSalesManager类的Id属性。