我正在开发简单的ASP .NET MVC应用程序。我有一个简单的本地数据库。该数据库包含几个表。我为这个表之一制作了模型,视图和控制器。我还制作了DBContext类和Connection字符串。一切似乎工作正常,除了使用控制器返回空集的上下文。我确定该表至少包含一条记录。我不知道出了什么问题。
我的表架构:
CREATE TABLE [dbo].[SportsVenues] (
[Id] INT NOT NULL,
[Name] NVARCHAR (100) NOT NULL,
[Description] TEXT NOT NULL,
[Country] NVARCHAR (100) NULL,
[City] NVARCHAR (100) NULL,
[Street] NVARCHAR (100) NULL,
[Area] DECIMAL (18) NULL,
[PictureUrl] NVARCHAR (100) NULL,
[OppeningYear] DATETIME NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
有这样的模特:
[Table("SportsVenues")]
public class SportsVenue
{
[Column("Id")]
public int Id { get; set; }
[Column("Name")]
public string Name { get; set; }
[Column("Description")]
public string Description { get; set; }
public string Country { get; set; }
public string City { get; set; }
public string Street { get; set; }
public double Area { get; set; }
public DateTime OppeningYear { get; set; }
}
有数据库上下文类:
public class StecSportsDBContext : DbContext
{
public DbSet<StecSports.Models.Trick> Tricks { get; set; }
public DbSet<StecSports.Models.Event> Events { get; set; }
public DbSet<StecSports.Models.SportsVenue> Venues { get; set; }
}
还有我的连接字符串:
<add name="StecSportsDBContext"
connectionString="Data Source=|DataDirectory|\StecSports.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
我还检查了查询发送到数据库,并在新查询页面中键入后,它按预期返回数据。我在Windows 7上使用visual studio 2012。 如何将数据存储在数据库中?我做错了什么?
正如Eric J.所要求的那样,在控制器中,我只使用DbContext类中的属性场所:
ViewBag.venuesList = db.Venues;
初始化为:
private StecSportsDBContext db = new StecSportsDBContext();
它给我这样的SQL查询:
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name],
[Extent1].[Description] AS [Description],
[Extent1].[Country] AS [Country],
[Extent1].[City] AS [City],
[Extent1].[Street] AS [Street],
[Extent1].[Area] AS [Area],
[Extent1].[OppeningYear] AS [OppeningYear]
FROM [SportsVenues] AS [Extent1]}
我确定此查询有效并返回正确的数据,因为我复制了它并在数据库服务器上运行。
答案 0 :(得分:1)
您必须枚举您的查询。您可以使用.ToList()
来获得结果。
ViewBag.venuesList = db.Venues.ToList();