2010-08-24 56 views
9

我想使實體成爲內部的。我已經將實體,標量屬性和導航屬性更改爲內部。當我嘗試構建它時,出現此錯誤:更改實體的可訪問性

錯誤6036:EntityType'File'具有'Internal'可訪問性和EntitySet'Files'具有'Public'可訪問性的get屬性。 EntitySet的get屬性不能比包含EntityType的訪問具有更少的限制性訪問。

我無法編輯designer.cs,因爲它沒有生成這個錯誤。我檢查過edmx文件,但沒有任何與「文件」或「文件」關聯的公共值。我該怎麼辦?

回答

19
  1. 在VS實體設計器中打開模型。
  2. 切換到模型瀏覽器窗口。
  3. 展開以下節點:
  • ModelName.edmx
    • Model
      • Entity Types
      • Complex Types
      • Associations
      • EntityContainer: MyEntities
        • Entity Sets
  • 在 「實體集」 列表中,您應該看到 「文件」 的條目。點擊它。
  • 切換到屬性編輯器窗口並更改Getter可見性。
  • +0

    謝謝,這個伎倆。現在我得到了不同的錯誤:「不一致的可訪問性:屬性類型'System.Data.Objects.DataClasses.EntityCollection '比屬性'BLL.Proje.tblFiles''更難以訪問」。我檢查過ModelName.edmx> ModelName.Store>表/視圖> tblFiles,但它沒有任何輔助屬性。我手動編輯了設計器代碼,但它確實恢復爲公開,所以我認爲有更合適的方法? – dstr 2010-08-25 07:25:09

    +0

    這是一個C#錯誤,而不是EDMX錯誤。什麼是「BLL.Proje.tblFiles」? – 2010-08-25 12:43:19

    +0

    Proje是另一個實體。文件實體與名爲「tblFiles」的導航屬性關聯到Proje。原來,我不得不改變Proje表上tblFiles導航屬性的訪問屬性,它現在可以工作。非常感謝。 – dstr 2010-08-25 14:24:22

    2

    我無法在模型瀏覽器中找到「EntityContainer:MyEntities」。我仍然不確定爲什麼 - 除此之外,我的實體設計器和模型瀏覽器完全可以正常工作。所以,我能夠直接通過XML來改變Getter的可見性。只需使用XML編輯器打開.edmx文件,並在「CSDL內容」部分中添加類似於此的GetterAccess屬性即可。

    <EntitySet Name="Locations" EntityType="MyComponent.Location" a:GetterAccess="Internal" /> 
    
    +0

    我也沒有EntityContainer節點,但在編輯完XML後,它就出現了! – SlimShaggy 2012-07-25 14:27:43

    +0

    我知道答案爲什麼:)你不能在瀏覽器中看到EntitySets,因爲你首先將容器的可見性更改爲Internal,然後試圖找到EntitySets(默認情況下是公共的)。這就是他們失蹤的原因。嘗試設置從低級到高級實體的可見性,即1.實體2.實體集3.實體容器 – 2013-05-02 12:45:19