C# MVC代码第一个问题:从远程SQL Server获取数据
我的代码运行时没有任何错误,但它似乎没有从我的SQL Server中提取任何数据。调试时,我得到下面的查询字符串。根据我的理解,它应该从表中选择所有。。。如果我错了,请告诉我我是MVC新手,谢谢你的帮助 连接字符串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
<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属性。