2010-08-24 14 views
9

Quiero hacer una entidad interna. Cambié la entidad, sus propiedades escalares y propiedades de navegación a internas. Obtengo este error cuando intento compilarlo:Cambiando la accesibilidad de la entidad

Error 6036: EntityType 'File' tiene accesibilidad 'interna' y 'Files' EntitySet tiene una propiedad get con accesibilidad 'Public'. La propiedad de obtención de EntitySet no debe tener un acceso menos restrictivo que el que contiene el acceso de EntityType.

No puedo editar designer.cs debido a este error que no se genera. Revisé el archivo edmx pero no hay ningún valor público asociado a "Archivo" o "Archivos". ¿Que debería hacer?

Respuesta

19
  1. Abra el modelo en el diseñador de entidad VS.
  2. Cambie a la ventana del Navegador de modelos.
  3. expanda los nodos siguientes:
  • ModelName.edmx
    • Model
      • Entity Types
      • Complex Types
      • Associations
      • EntityContainer: MyEntities
        • Entity Sets
  1. En la lista de "conjuntos de entidades" debería ver una entrada para "archivos". Pinchalo.
  2. Cambie a la ventana del editor de propiedades y cambie la visibilidad de Getter.
+0

Gracias, eso funcionó. Ahora obtengo un error diferente: "Accesibilidad incoherente: el tipo de propiedad 'System.Data.Objects.DataClasses.EntityCollection ' es menos accesible que la propiedad 'BLL.Proje.tblFiles'". He comprobado ModelName.edmx> ModelName.Store> Tables/Views> tblFiles pero no tiene ninguna propiedad de accesibilidad. Edité el código del diseñador manualmente, pero volvió a ser público, así que supongo que hay una forma más adecuada. – dstr

+0

Eso es un error de C#, no un error de EDMX. ¿Qué es 'BLL.Proje.tblFiles'? –

+0

Proje es otra entidad. La entidad de archivo está asociada a Proje con una propiedad de navegación llamada "tblFiles". Resultó que tuve que cambiar la propiedad de acceso de la propiedad de navegación tblFiles en la tabla de Proje y funciona ahora. Muchas gracias. – dstr

2

No he podido encontrar el "EntityContainer: MyEntities" en el navegador de modelos. Todavía no estoy seguro de por qué: el diseñador de mi entidad y el navegador de modelos funcionan completamente de otra manera, excepto por esto. Entonces, pude cambiar la visibilidad de Getter directamente a través de XML. Simplemente abra el archivo .edmx usando el editor XML y agregue el atributo GetterAccess similar a este en la sección "Contenido de CSDL".

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

No tenía tampoco el nodo EntityContainer, ¡pero después de editar el XML apareció! – SlimShaggy

+0

Sé la respuesta por qué :) No puede ver los EntitySets en el navegador, porque cambió la visibilidad del contenedor a Internal al principio, y luego trató de encontrar los EntitySets (que es público por defecto). Es por eso que han desaparecido. Intente establecer visibilidades de entidades de bajo nivel a entidades de alto nivel, es decir, 1.entidades 2.entidad establece 3.entidades contenedor –

Cuestiones relacionadas