2016-05-21 11 views
-3

ich eine DbContext Klasse haben wieWie abstrakte Klassen in EF verwenden

abstract public class CostCenter 
{ 

    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    abstract public Guid ID 
    { 
     get; 
     set; 
    } 

    abstract public string CostCenterName 
    { 
     get; 
     set; 
    } 
} 

aber ich kann seine gib mir Fehler, beachten Sie abstrakte Klasse ist mein Bedürfnis hier nicht ausgeführt Add-Migration und Update-Datenbank-Befehle,

+0

Bitte benutzen Sie die Fehler versuchen, das Lesen und das Suchen im Internet für sie? – CodeCaster

+0

Schreiben Sie immer die Fehlermeldung in Ihre Frage. – CodeNotFound

+0

SLCloud.Accounting.Data.Context.CostCenter:: EntityType 'CostCenter' hat keinen Schlüssel definiert. Definieren Sie den Schlüssel für diesen EntityType. CostCenter: EntityType: EntitySet 'CostCenter' basiert auf dem Typ 'CostCenter', für den keine Schlüssel definiert sind. – Agahii

Antwort

3

Sie sollten eine neue Klasse von CostCenter ableiten und die abgeleitete Klasse als DbSet zu Ihrem DbContext hinzufügen.

Beispiele:

[Table("SomeCostCenter")] 
public class SomeCostCenter : CostCenter 
{ 

} 

Und:

[Table("AnotherCostCenter")] 
public class AnotherCostCenter : CostCenter 
{ 

} 

Und auf DbContext:

DbSet<SomeCostCenter> { get; set; } 
DbSet<AnotherCostCenter> { get; set; } 

Beachten Sie, dass diese Tabelle pro Typ verwenden eingerichtet (TPT) Vererbung, um jeden abgeleiteten Typ in einer separaten Tabelle zu speichern. Dazu gibt es andere Optionen wie Tabelle-pro-Hierarchie (TPH) oder Tabelle-für-Konkret-Klasse (TPC). Sie können nach jedem dieser Begriffe suchen, um festzustellen, welche in Ihrem Szenario am besten funktionieren.

Dies könnte ein schnelles liest wert sein: http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph

Verwandte Themen