2017-05-05 2 views
0

Liebe Entity-Experten und andere,Entity Framework Datenbankmodell

Ich habe die folgenden Einrichtungen,

Basisklasse Individual:

public abstract class Individual 
    { 
     [Key] 
     public int IndividualID { get; set; } 
     ... other properties 
    } 

Yogi:

[Table("Yogis")] 
    public class Yogi : Individual 
    { 
     public string Firstname { get; set; } 
     public string Lastname { get; set; } 
     public DateTime Birthdate { get; set; } 
    } 

Kunde:

[Table("Customers")] 
public class Customer : Individual 
{ 
    public string Name { get; set; } 

    [ForeignKey("VATID")] // tried with and without 
    public virtual VAT VAT { get; set; } 
} 

VAT:

public class VAT 
{ 
    [Key] 
    public int VATID { get; set; }  

    [Required] 
    public virtual Customer VATHolder { get; set; } 
    ... other properties 
} 

DbContext:

public DbSet<Individual> Individuals { get; set; } 
    public DbSet<VAT> VATS { get; set; } 

So über die erstellt eine Tabelle MwSt wo Umsatzsteuer ID 2 ist, mit dem beginnen sollte 1 stattdessen verstehe ich nicht, warum das passiert, sollte dies 1 sein, nicht wahr? Es gibt auch keinen Verweis irgendwo in irgendeiner Tabelle, die Kunde & VAT verweist, wie kann ich eine separate Tabelle VAT_Customer schaffen, wo Sie eine VATID & CustomerID haben?

Dies ist, wie ich das Unternehmen Kunden erstellen und einfügen:

 VAT vat = new VAT("123456789"); 
     DataBaseHandler.InsertIndividual(new Customer("Customer name", vat,...)); 

Funktion einfügen:

public static void InsertIndividual(Individual individual) 
    { 
     using (MyDbContext ctx = new MyDbContext()) 
     {    
       ctx.Individuals.Add(individual);  
       ctx.SaveChanges();          
     } 
    } 

ich mehrere Möglichkeiten ausprobiert haben (EXAMPLES HERE), aber ich ziehe es die Art und Weise TPT, mit eine separate Ansicht von Entitäten oder Beziehungen zwischen Entitäten. Was mache ich falsch und wie würde ich das gewünschte Ergebnis erzielen? Lass es mich wissen, wenn ich etwas klären kann. Vielen Dank im Voraus für jegliche Hilfe oder Vorschläge!

Mit freundlichen Grüßen!

Antwort

1

Ihre ForeignKey Platzierung sollte in etwa so aussehen, wenn Sie wollen 1: 1 haben Beziehung:

enter code here 
[ForeignKey("VAT")] 
public virtual int VATId { get; set; } 
public virtual VAT VAT { get; set; } 

Namen in der ForeignKey gleiche wie Ihre Klasse ist.

Hoffnung dabei helfen können

+0

auch brauchen Sie nicht (Kunde) in Vat Klasse ,, Sie es von den Kunden direkten Zugriff auf –

+0

, wenn Ihr Kunde mehr als 1Vat hat ,, fügen Sie diese an Ihre Kunden Klasse: öffentliche virtuelle Liste VATS {bekommen; einstellen; } –

+0

Der Kunde kann nur 1 USt nr haben, so wie Sie eine 1 1 sagten. Ich habe folgendes getan: ** Entfernen des Kunden aus der USt.-Klasse: ** - Macht ID von USt. 1 statt 2 (GREAT!) - Fügt einen Spaltennamen in Kundentabelle VAT_VATID (GREAT!) Hinzu. [ForeignKey ("VAT")] public virtual int VATID {erhalten; einstellen; } öffentliche virtuelle Mehrwertsteuer Mehrwertsteuer {erhalten; einstellen; } Das gibt mir eine VATID Spalte in den Kunden Tabellen, die bis jetzt das beste Ergebnis ist, das ich gesehen habe.Gibt es eine Möglichkeit, sie separat einer Tabelle zuzuordnen, wie CUSTOMER_VAT, wo es eine VATID und eine KUNDEN-ID geben würde? –