2012-01-10 29 views
5

完整的錯誤我得到的是:的SQL Server 2008:確保IncludeMetadataConvention已被添加到DbModelBuilder公約

型號的兼容性無法進行檢查,因爲該數據庫不包含模型元數據。確保IncludeMetadataConvention已被添加到DbModelBuilder約定中。

我已經用SQL Server Compact試過了,它工作正常,但主機提供程序只支持專用服務器的CE,我在共享計劃中,所以我使用的是SQL Server 2008。 db的格式如下:

<connectionStrings> 
    <add name="DBContext" 
     connectionString="Data Source=1.1.1.1;Initial Catalog=dbname;User Id=user;Password=pass;" 
     providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

我也有一個在Application_Startup中運行的DatabaseInitializer。如果需要進一步的代碼,請告訴我?我也沒有創建edmx數據模型,我使用的是EF Code First。

我改變了初始化代碼總是刪除數據庫,但現在我得到錯誤,在數據庫'master'中拒絕了CREATE DATABASE權限。我不知道爲什麼當我告訴它使用初始目錄時我會得到這個結果。

我傳入null給SetInitializer現在,但現在我得到以下錯誤:

無法打開數據庫「DBNAME」由登錄請求。登錄失敗。 用戶'用戶'登錄失敗。

我仍在使用上面的連接字符串。

回答

4

I changed the initializer code Drop the database always, but now I get the error, CREATE DATABASE permission denied in database 'master'. I don't know why I get this when I telling it the Initial Catalog to use.

您絕對不能在共享主機上這樣做,因爲您幾乎從不擁有直接創建數據庫的權限。數據庫只能在主機提供商的特殊界面中創建。 SQL服務器允許你刪除你擁有的數據庫,但是一旦你刪除了它,你的權限就消失了,你不能在沒有權限創建數據庫的情況下重新創建它(在共享主機中你從來沒有這個權限)。

I am passing in null to the SetInitializer for now, but now I get the following error:

太晚了。您的數據庫被刪除。您必須通過託管提供商界面創建它,或與您的託管服務提供商聯繫以重新創建它。

I also have a DatabaseInitializer that runs in Application_Startup.

您不能在共享主機中使用任何內置數據庫初始值設定項,因爲它們都預計它們將創建數據庫。您可以使用custom initializer來填充現有數據庫的表格。

+0

當我踏入這一步時,我意識到你所說的一切以及發生了什麼。現在,即使我創建了數據庫,它也不會創建我的表格Movies。這是說dbo.Movies是一個無效的對象。我有DbSet 電影{get; set;}代碼 – Xaisoft 2012-01-10 15:54:36

+0

這是在最後一段中解釋的。內置數據庫初始化器只能創建數據庫和表。他們不會用表格填充現有的數據庫,所以你的數據庫仍然是空的。 – 2012-01-10 15:56:32