2015-05-11 99 views
1

我正在处理简单的ASP .NET MVC应用程序。我有一个简单的本地数据库。这个数据库包含一些表格。我为这个表格中的一个制作了模型,视图和控制器。我也做了DBContext类和连接字符串。似乎一切似乎工作正常,除了使用控制器的上下文返回空集。我确定该表至少包含一条记录。我不知道什么是错的。实体框架返回空集

有我的表架构:

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]} 

我确定这个查询工作并返回正确的数据,因为我复制它并在数据库上运行ase服务器。

+3

你显示了一切,但实际上试图查询数据库的代码。 –

+0

我只是使用像ViewBag.venuesList = db.Venues;它给我sql查询如{SELECT [Extent1]。[Id] AS [Id], [Extent1]。[Name] AS [Name], [Extent1]。[Description] AS [Description], [Extent1 ] [国家] AS [国家], [范围1]。[城市] AS [城市], [范围1]。[街道] AS [街道], [范围1]。[范围] AS [范围], [Extent1]。[OppeningYear] AS [OppeningYear] FROM [SportsVenues] AS [Extent1]}。 db变量初始化为私有StecSportsDBContext db = new StecSportsDBContext(); – user2800697

+0

请用该代码编辑您的问题,而不是添加评论。 –

回答

1

你必须枚举你的查询。您可以使用.ToList()来获得您的结果。

ViewBag.venuesList = db.Venues.ToList(); 
+0

它可悲的是不工作。 – user2800697

+0

其实db.Venues.Count()返回0.我认为连接字符串有问题。 – user2800697

+0

在实例化你的上下文之后,检查你的连接字符串以确保它正确地从配置文件中取出它:'db.Database.Connection.ConnectionString' – Brino