Entity Framework - Beziehung mit gefälschten Foreign Key (keine Fremdschlüssel in der db)

Ich habe viele Tabellen, in denen TextID Spalte bezieht sich auf die translation-Tabelle. Die übersetzungstabelle muss auch LanguageID man übersetzt text in die gewünschte Sprache. Mein problem ist, dass ich nicht LanguageID in meiner Datenbank, es ist im system vordefiniert und ich weiß nicht, wie kann ich es definieren mithilfe der Fluent-API, ich.e das kann mein Modell:

public partial class MyEntity
{    
    public short ID { get; set; }
    public Nullable<int> TextID { get; set; }
    [NotMapped]
    public Nullable<int> LanguageID { get; set; }
    public virtual TEXT_TRANSLATION Translation { get; set; }
}

Und die translation-Tabelle:

public partial class TEXT_TRANSLATION
{
    [Key, Column(Order = 0)]
    public int TextID { get; set; }

    [Key, Column(Order = 1)]
    public int LanguageID { get; set; }

    public string TranslatedText { get; set; } 
}

Im Prinzip brauche ich eine navigation wie hier:

myEntity.Translation.TranslatedText

Während mit SQL würde ich es so machen:

Left Join TEXT_TRANSLATION ON 
  MyEntity.TextID = TEXT_TRANSLATION.TextID 
  AND TEXT_TRANSLATION.LanguageID = 1033 

Grundsätzlich möchte ich nutzen, TextID foreign key bekommen und NUR EINE übersetzung - LanguageID ist statisch und vordefiniert im Kontext.

Kann ich nicht ändern vorhandene DB-schema. Ideal wäre es, wenn ich nicht brauchen, um anzeigen LanguageID Feld in meinem code, nur verwenden es im mapping wie ein system-parameter. Ist es überhaupt möglich, mit EF?

  • Aber Sie haben bereits eine Spalte LanguageID in TEXT_TRANSLATION Tisch, nicht wahr ?
  • ja, aber ich habe nicht LanguageId in der anderen Tabelle. Und ich brauche diese navigation
  • Und können Benutzer änderungen an TEXT_TRANSLATION Tabelle ? Es ist eine riesige Tabelle ? Verursachen Sie möglicherweise alle Ihre Inhalte, steckte es in eine statische Liste, und mit ihm zu arbeiten, vielleicht ?
  • T_T Tabelle ist riesig
InformationsquelleAutor Jarek | 2013-01-28
Schreibe einen Kommentar