2013-02-07 129 views
4

首先,我不得不說,我對MVC和EF一個完整的新手。我一直在使用數據庫首先創建的模型,並選擇了兩個表的用戶--->用戶詳細信息(相關)實體框架5 MVC 4 - 腳手架錯誤 - 沒有鑰匙

這些模型產生的罰款,但罰款驗證,如果我嘗試做簡單的數據存取這也能正常工作。

現在,當我嘗試結合這與MVC 4腳手架和選擇新的控制器/ EF框架添加/更新/刪除等,我把User Model + UserContext它抱怨自動生成的模型沒有關鍵。

實體類型 - 「用戶」也沒有鑰匙。所以我打開模型並看到實際上有一個鍵,它有複選框實體鍵打勾,以及屬性旁邊的小「鑰匙」符號。

我到處尋找唯一可行的解​​決方案是手動打開User.cs並在鍵旁邊放置[Key]屬性 - 這對我來說是可怕的,因爲這個文件顯然是自動生成的,我不想要必須爲每個關鍵點做到這一點?難道我做錯了什麼?

從來沒有少我離題了,現在我已經添加的關鍵在於User和CS的UserDetails文件,它停止抱怨,現在開始抱怨:

無法檢索元數據:用戶。無法確定User和UserDetail之間關聯的原則結束。該關聯的原則結束必須使用關係流暢API或數據註釋來顯式配置。

我現在已經兩個問題:

  1. ,我應該像這樣自動生成的文件搞亂?或者我做錯了什麼? 2 /我如何解決第二個問題?

我覺得有些事情是錯的,因爲我不應該在這樣的問題後遇到問題?

+0

我有一個想法:你的禮物的關鍵是有一個'{get; set;}'?如果你沒有EF和腳手架不工作 – MayogaX

回答

1

我有一個類似的「無法檢索類型...的元數據」錯誤。假設(如果有)之間的關係UsersUserDetails實施正確,你可以嘗試以下,這是我做了什麼來解決這個錯誤:

在你的Web.config文件(根目錄,在解決方案管理器)從此您的連接字符串中的變化name的盡頭......

<connectionStrings> 
<add name="YourContext" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

...這樣的:

<connectionStrings> 
<add name="DefaultConnection" connectionString="Data Source=|DataDirectory|YourNamespace.Models.YourDBName.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

只要改變name,沒有別的。然後構建您的解決方案並嘗試運行它。可能是一個長鏡頭,但它對我有用。來自here的更多信息,我問了一個類似的問題。

+0

:(沒有爲我工作,將不得不繼續嘗試。 –

0

的關鍵是使用如下:

public class Item() 
{ 
    [Key] 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

的關鍵是用來告訴實體,這是與數據註釋的主鍵。