2014-03-06 14 views
6

Ich habe alsoUneinheitliche Zugänglichkeit: Objekttyp in DbContext

public Dbset<Demo> Demo{ get; set; } 

Dbset im Kontext hinzugefügt, aber ich bin immer Kompilierungsfehler hier also

Error 1 Inconsistent accessibility: property type 'System.Data.Entity.DbSet<MVC.Model.Demo>' is less accessible than property 'MVC.Model.Demo' D:Files/project 210 34 MVC.Data 

Hier ist mein Modell: -

class Demo 
    { 
     [Key] 
     [Display(Name = "ID", ResourceType = typeof(Resources.Resource))] 
     public long Id { get; set;} 

     [Display(Name = "CountryID", ResourceType = typeof(Resources.Resource))] 
     public long CountryId { get; set; } 

     [Display(Name = "RightID", ResourceType = typeof(Resources.Resource))] 
     public long RightId { get; set; } 

     [Display(Name = "Amount", ResourceType = typeof(Resources.Resource))] 
     public double Amount { get; set; } 
    } 

Antwort

15

Demo hat keine Zugriffsmodifikator und Klassen sind internal standardmäßig, so ist es les s zugänglich als die DbSetDemo, die public ist. Außerdem sollten Sie wahrscheinlich die DbSetDemos aufrufen, um die beiden nicht zu verwechseln, und da sie semantisch eine Menge von Demos enthält.

Da der Satz ist öffentlich:

public DbSet<Demo> Demo { get; set; } 

Sie müssen auch die Demo-Klasse öffentlich machen:

public class Demo 
{ 
    .... 
} 

Wie bereits erwähnt, empfehle ich Ihnen auch das Set zu ändern:

public DbSet<Demo> Demos { get; set; } 

, damit Sie das Set nicht mit dem Klassentyp verwechseln.

+0

Wenn ich "öffentlich" aus dem obigen Code entferne, wird es erfolgreich kompiliert, aber dann kann ich nicht auf das Zuweisungsmodell von der Steuerungsseite zugreifen. Also was für das zu tun? – user3206357

+0

@ user3206357 - Sie müssen die Zuweisung öffentlich machen. – acarlon

+0

@ user3206357 - siehe das Update. – acarlon