2012-12-11 23 views
1

我剛剛開始在WebMatrix上工作,我做了this教程,學習了基本知識,然後我開始使用this一個開始使用WebMatrix上的Entity Framework(注意:該教程是針對WebMatrix 1,但我看到的唯一改變就是你將helper安裝到你的項目中的方式)。問題是,我安裝了Entity Framework助手,但我的項目無法識別EntityFramework.dll。WebMatrix 2不識別EntityFramework幫手

我得到這個錯誤The type or namespace name 'MaxLength' could not be found (are you missing a using directive or an assembly reference?)。但EntityFramework.dll確實出現在我的bin文件夾中,發生了什麼?我不明白爲什麼參考不起作用。

這是根據第二個教程和安裝的EntityFramework助手後,我的Web.config文件:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    </configSections> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"><assemblies><add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /><add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /></assemblies></compilation> 
    </system.web> 
    <connectionStrings> 
    <add name="BookContext" connectionString="Data Source=|DataDirectory|Books.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
    </connectionStrings> 
</configuration> 

這是編譯器輸出link

我缺少的東西?爲什麼EntityFramework.dll不能被我的項目正確識別?

UPDATE

我想,當我從在Visual Studio 2012中創建一個網頁項目複製EntityFramework.dll問題解決了,但即使錯誤不再顯示,WebMatrix中仍然不承認喜歡錶,列,ForeignKey的,InverseProperty等

我真的不明白,創建一個簡單的數據庫,但我不能使用的EntityFramework批註指定所有我需要的數據庫註釋。 WebMatrix應該識別EntityFramewor.dll,但它不是。我需要幫助,因爲我真的迷失了。

+0

MaxLengthAttribute存在於System.ComponentModel.DataAnnotations.dll程序集中。 http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.maxlengthattribute.length.aspx – Pawel

+0

實體框架還具有MaxLengthAttribute http://msdn.microsoft.com/en-us/庫/ system.componentmodel.dataannotations.maxlengthattribute%28v = vs.103%29.aspx –

+0

是的,它曾經住在EntityFramework中,但後來被移動到System.ComponentModel.DataAnnotations – Pawel

回答

2

您看到的錯誤是安裝在您網站上的EntityFramework版本的最終結果。

EntityFramework 5.0軟件包根據項目所針對的.NET版本(4.0或4.5)安裝EntityFramework.dll的4.4或5.0版本。

根據我的經驗,從WebMatrix中的NuGet Gallery安裝EntityFramework總是將EntityFramework.dll的4.4版本複製到bin文件夾中:您可以查看EntityFramework.dll文件的屬性 - >詳細信息。

我知道的唯一解決方案是使用VisualStudio Express或其他獨立實用程序下載EntityFramework v.5.0(查看此文章:Install Entity Framewok v5 in Webmatrix 2 RC),並簡單地將WebMatrix中由NuGet Gallery安裝的dll替換爲此文件。

UPDATE

用的EntityFramework v.5.0中和試驗WebMatrix的其他問題是,類型「System.Data.EntityState」中未被引用的組件被定義並且是需要使用DataAnnotations.Schema指令

第一個問題已解決,將以下參考添加到web。配置(看Could not load file or assembly 'System.Data.Entity):

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 

第二個問題,需要添加指令

using System.ComponentModel.DataAnnotations.Schema; 

的代碼。

無論如何,在我看來,WebMatrix並不是開發基於EntityFramework的站點的正確工具。

+0

我按照你的說法做了,並在Visual Studio中創建了一個項目,並從Package文件夾複製了EntityFramework.dll,在EntityFramework.5.0.0文件夾中找到了一個lib文件夾,並在其中找到了兩個以上的文件夾,一個名爲net40,另一個名爲net45。 我將net45文件夾中的dll複製到我的WebMatrix項目中,並且錯誤不再出現,但數據庫沒有被創建,EntityFramework屬性也沒有被識別(它們不像普通屬性那樣突出顯示),我是否缺少其他東西? –

+0

我必須在某處手動添加參考嗎? [this](http://i.imgur.com/R3kgV.png)就是我說的,當我說dll沒有被識別,而其他的dll被識別時,EF dll不是'根據教程,其中一個,根據教程,當我運行空的cshtml時,應該在App_Data文件夾中創建一個數據庫,但正如您在圖像中看到的,沒有創建數據庫,這就是爲什麼我要問是否應該添加其他地方的參考。謝謝您的幫助。 –

+0

您確定運行網站時未創建數據庫嗎?如果您在瀏覽器中看到與Brind文章中相同的輸出並且不會引發異常,則該數據庫位於App_Data文件夾中;仍然應該刷新文件夾樹以查看它。 – GmG