2015-05-11 96 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