6

我正在使用實體框架在C#中生成類和函數我需要與SQL服務器交互。實體框架不爲表或過程生成類

供參考,這是我的一個表:

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[Area](
    [ID] [bigint] identity (1, 1) primary key, 
    [Name] [nvarchar](100) NOT NULL 
    ) 
GO 

運行的實體數據模型嚮導(使用「EF設計師從數據庫」)之後,我的項目有EDMX文件和一些新的.cs文件,但它似乎並沒有產生它所需要的一切。

在我DatabaseEntities類,例如,我有:

public virtual DbSet<Area> Areas { get; set; } 

然而,有該類型「區」沒有定義(連同其他三名失蹤類型)。我也缺少存儲過程的功能。

我試過刪除新文件並重新運行模型嚮導,但我得到了相同的結果。

有沒有其他人遇到過這個問題?

圖片的標題說明:

我過去幾年的嘗試,該向導運行時我還得到一個錯誤過程中發現:「實體框架包裝不上項目」。但是,當點擊它時,它仍然生成edmx和model.context。

我對於Entity Framework版本6.0.0和6.1.2都有同樣的問題。

重新安裝框架對問題沒有影響。

UPDATE:

卸載的NuGet並重新安裝最新版本讓我沒有錯誤通過的NuGet安裝的EntityFramework。但是,現在ADO.NET數據模型從Add New Item對話框中丟失了。

+0

如果您正在從現有數據庫執行CodeFirst,則不會獲得任意存儲的特效或tvfs,因爲它們不是由CodeFirst本機支持的。 – Pawel 2015-02-17 22:16:20

+0

對於存儲過程,您可能需要添加下兩行: SET FMTONLY OFF SET NOCOUNT ON 在對話框中可以創建複雜類型。 建議再次移除FMTONLY ON。 對於表格,你可以顯示錶格定義嗎? – Ako 2015-02-17 22:24:46

+0

@Pawel:我使用數據庫中的EF Designer。 – 2015-02-17 23:23:14

回答

2

有參與就是我所做的幾個步驟,我不得不給一些信用評價誰的問題下面的人。

1)我卸載nuget包管理器,並重新安裝最新版本(顯然我的不是新鮮的)。這允許我通過金塊安裝EntityFramework,沒有錯誤或回滾消息。

2)我不確定這是否有幫助,但我也通過微軟的網站重新安裝了Visual Studio的實體框架工具。我仍然不確定是否有必要同時擁有兩者。

3)ADO.NET實體數據模型模板似乎在添加新項目對話框中缺失。選擇「添加 - >組件」而不是「添加 - >新建項目」後,它會神祕地出現在這兩個列表下。

一旦完成,我就可以運行EF Designer並生成沒有問題的所有東西。

-3

就個人而言,我強烈建議使用Code-First方法而不是設計器。由於設計師無非是麻煩!

Code First Tutorial

Calling Stored Procedures from Code First

+0

這可能值得研究。雖然,我的設計師和我的最後一個項目一起使用,但它工作得很好。 – 2015-02-17 23:48:50

+1

我曾經使用VB和WinForms,大多數事情都很好;-)老實說,當你嘗試用自定義導航屬性更新高度相關的實體時,你最終會把你的頭髮拉出來! – 2015-02-17 23:53:11

+0

在Code第一種方法中,如果數據庫需要更多的表和字段,而不是如何更新數據庫結構?據我所知,在代碼優先模式下數據庫不會自動升級。 – 2015-05-25 06:07:45

0

確保您的列名不是保留字,如數據類型或關鍵字;今天我遇到了一個問題,試圖導入一個表格,列中有人簡單地稱爲「DATE」,這顯然是一種數據類型,並且EF表示EF。當我在SQL中創建一個視圖,並用未命名的名稱替換該列時,表導入得很好,並生成了所有必需的類。