有誰知道如何解決這個錯誤:如何修復System.Data.Edm.EdmEntityType沒有密鑰
System.Data.Edm.EdmEntityType: : EntityType 'BlogTags' has no key defined. Define the key for this EntityType.
使用MVC 3與實體框架。
有誰知道如何解決這個錯誤:如何修復System.Data.Edm.EdmEntityType沒有密鑰
System.Data.Edm.EdmEntityType: : EntityType 'BlogTags' has no key defined. Define the key for this EntityType.
使用MVC 3與實體框架。
錯誤告訴你所有你需要知道的:「定義這個EntityType的關鍵」。
在EF中,所有實體都必須具有某種類型的主鍵。
只需將[鑰匙]放在您的財產(這是呈現主鍵)的頂部。類似這樣,
[Key]
public int BlogTypeId { get; set; }
但是,如果文件是自動生成的,那麼它將在您重新運行時擦除更改項目。 – BrainSlugs83 2012-11-03 22:53:56
不,不適用於我 - 我的字段名稱以ID結尾,並且它具有[Key]屬性。也是一個屬性,即{get;組; } – DaveBoltman 2015-11-16 12:42:53
如果遵循約定「Id」或「EntityNameId」,MVC3將自動識別實體的密鑰。此外,該實體必須將其作爲PROPERTY公開,並且必須是PUBLIC。我犯了使用受保護的屬性的錯誤,並得到了這個錯誤。
一個很好的例子是:
public int Id { get; set; }
OR
public int EntityNameId { get; set; }
,如果你想在你的代碼非常明確的使用[關鍵]屬性,如果你不能按照本公約或。
如果有一個已經存在的數據庫並且仍然出現相同的錯誤,會發生什麼情況?我正在使用MVC 3和SQL Server 2008 R2。 – 2012-02-10 00:46:18
此外,列名稱也是「FormID」也使用[Key] – 2012-02-10 00:52:15
啊!必須是屬性...這是_my_錯誤!謝謝。 – BruceHill 2012-07-29 17:36:34
在分享解決同一問題的精神......
我有同樣的問題,但編碼MVC 4應用程序與VS2012時,它不是由[重點]解決固定。
我忘了在模型成員中包含getter和setter。僅僅讓他們公開是不夠的,Visual Studio會給你同樣的錯誤信息。
我確定了導致此消息的5個方案 - 覆蓋a small blog post about it。
Intersting小點點分享。在我的模型中,我將代碼從一個.NET框架移植到另一個框架,並錯過了將字符串xml字段轉換爲XDocument的屬性。酒店應該有應用了NotMappedAttribute,但就像我說的,我忘了,然後我開始這個-特異性不是很錯誤:模型生成過程中檢測到
一個或多個驗證錯誤:
\ tSystem .Data.Entity.Edm.EdmEntityType :: EntityType'XDocument'沒有定義鍵。定義此EntityType的關鍵字。 \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet'XDocuments'基於沒有定義鍵的類型'XDocument'。
由於錯誤發生在我的DbContext類公開的其他模型之一上,所以我對我的尾巴進行了約1個小時的查找。出於挫折感,我通過我的程序集和BAMB中的每個XDocument屬性搜尋!找到一個沒有NotMapped屬性的人。
只是想把它放在那裏,以防止別人把頭髮拉出來。
實施例:
// This NotMappedAttribute was missing and is required to prevent EF
// from treating the XDocument class as an entity that requires
// a KeyAttribute.
[NotMapped] //<== missing until now
public XDocument DataXml {
get { return XDocument.Parse(this.m_Xml); }
set {
this.m_Data = value.ToString();
}
}
相同的情況@Gilesey。在我的情況下,我不得不標記關鍵屬性公開,
public int Id {get;組; }
我已經把一個PK在SQL Server中,但它似乎沒有刷新VS來看到這呢? – RPS 2011-03-11 20:16:21
它可能沒有,請嘗試右鍵單擊模型並選擇「從數據庫更新模型」,否則只需右鍵單擊PK字段並選擇「實體鍵」項目。 – CodingGorilla 2011-03-11 20:20:22
我有一個關鍵的實體類型 - SQL和實體框架設計師甚至在旁邊都會顯示一個小鑰匙圖標。 – BrainSlugs83 2012-11-03 23:03:11