2016-08-04 17 views
0

Ich habe zwei Tabellen.Entity Framework - So fügen Sie eine Spalte aus Codetabellen zu aktuellen Entität

Eine Tabelle ist codes_table mit 3 Spalten type, code_id, code_name.

Es hält Zeilen wie:

type code_id code_name 
--------------------------- 
Color 1  Red 
Color 2  Blue 
Color 3  Green 
Size  1  Small 
Size  2  Medium 
Price 1  Cheep 

usw.

Die zweite Tabelle (nennen wir es Products) enthält eine Spalte namens COLOR_ID.

Ich glaube nicht, dass es möglich ist, einen Fremdschlüssel aus der zweiten Tabelle in die erste Tabelle zu erstellen.

Nun möchte ich alle Entitäten aus der Tabelle Produkte (d. H. Die zweite Tabelle) zurückgeben, und dass jede Entität den COLOR_NAME entsprechend seiner COLOR_ID enthält. (d. h. Ich versuche, den Farbnamen aus Tabelle 1 in Tabelle 2 entsprechend der Farb-ID abzurufen)

Ich verwende EF6, das auf VS2013 läuft und über ODP 12.1.24 mit Oracle 11G verbunden ist.

Wie kann ich das mit Entity Framework tun? Gibt es eine Linq-Abfrage, die die zusammengeführten Daten abrufen kann?

Danke.

+0

Bitte, sich etwas versuchen. Zeigen Sie zumindest Ihren Code, wo Sie Produkte mit EntityFramework erhalten. –

+0

Dieser Codeabschnitt gibt Produkte zurück: mit (var context = new MyContext()) { var products = aus p in context.Products select p; var res = produkte.ToArray(); } – Nir

+0

Haben Sie die 'Color' Navigationseigenschaft in' Product' Klasse? –

Antwort

0

können Sie von in Linq verschachtelten verwenden:

using (var ctx = new TestContext()) 
{ 
    var result = (from product in ctx.Products 
        from code in ctx.Codes.Where(c => product.colorId == c.code_id && c.type == "Color").DefaultIfEmpty() 
        select new {product, code}).ToList(); 
} 
+0

Interessant, aber ich möchte meine Produkteinheit mit dem Farbnamen angereichert haben. Gibt es eine Möglichkeit, der Product EF-Tabelle eine Art von Funktion/linq -Eigenschaft hinzuzufügen? – Nir

+0

@Nir können Sie eine dto-Klasse (z. B. ProductWithColorDto) verwenden und das Ergebnis dieser Abfrage injizieren. oder Sie können eine nicht zugeordnete Spalte in der Produktklasse verwenden und die Farbe im Code festlegen. – ArMaN

+0

Dank ArMaN, Ich war in der Lage, den Farbnamen zu meinem Produkt mit Ihren Ratschlägen hinzuzufügen. Ich hoffte jedoch, dass das Framework eine automatische Möglichkeit bietet, die Ergebnisse zu vergleichen (anstatt dass ich die Liste durchlaufe und die Eigenschaft color-name aktualisiere). Danke nochmal. – Nir