实体框架返回空集

时间:2015-05-11 18:11:55

标签: c# .net entity-framework

我正在开发简单的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]}

我确定此查询有效并返回正确的数据,因为我复制了它并在数据库服务器上运行。

1 个答案:

答案 0 :(得分:1)

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

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