2016-05-23 5 views
0

Entity-Framework 7.InvalidOperationException: Das 'Objekt' Entitätstyp erfordert einen Schlüssel

[Table("Settings")] 
public class Setting 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public object DefaultValue { get; set; } 
    public string Classification { get; set; } 
    public FacilitySettingOverride FacilitySettingOverride { get; set; } 
} 

[Table("FacilitySettingOverride")] 
public class FacilitySettingOverride 
{ 
    [Key] 
    [ForeignKey("FacilityId")] 
    public int FacilityId { get; set; } 

    public object Value { get; set; } 
    [ForeignKey("SettingId")] 
    public int SettingId { get; set; } 

    public virtual ICollection<Setting> Settings { get; set; } 
} 

[Table("Facilities")] 
public class Facility 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<FacilitySettingOverride> FacilitySettingOverrides { get; set; } 
} 

definiert werden, wenn Sie den Code ausführen

private IEnumerable<FacilitySettingOverride> GetFacilityBandwidthSettings 
    { 
     get 
     { 
      List<FacilitySettingOverride> settingList; 
      using (SettingDbContext context = new SettingDbContext()) 
      { 
       settingList = context.FacilitySettingOverride.ToList(); 
      } 
      return settingList; 
     } 
    } 

dann die Ausnahme erhalten:

InvalidOperationException: Für den Entitätstyp 'Objekt' muss ein Schlüssel definiert werden.

Der Kontext ist:

public class SettingDbContext : DbContext 
{ 
    public DbSet<Setting> Settings { get; set; } 
    public DbSet<FacilitySettingOverride> FacilitySettingOverride { get; set; } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     optionsBuilder.UseSqlServer("Data Source=13.53.63.74;Initial Catalog=AAAAA;User ID=sa;password=password); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 

    } 
} 

Allerdings, wenn ich die object bespannen für Value oder DefaultValue in POCO dann keine Ausnahme ändern. Aber der Typ in der Datenbank ist sql_variant. Ich muss den Typ object verwenden.

+0

Ich glaube nicht, 'sql_variant' von Entity Framework unterstützt wird. –

Antwort

Verwandte Themen