Wie können Sie eine Beziehung zwischen eins und eins in Subsonic erstellen? Zum Beispiel habe ich meine Tabelle Lesungen und jede Lesung hat nur ein Buch, aber Subsonic gibt eine IQueryable
Bücher zurück. Ich möchte, dass es nur ein Buch zurückgibt. Vielen Dank.Eins zu eins Beziehungen mit Subsonic
Antwort
Ich nehme an, dass Sie die ActiveRecord Vorlage verwenden, um Ihren Code zu generieren.
Innen ActiveRecord.tt, werden Sie einen Abschnitt sehen, die wie folgt aussieht:
public IQueryable<<#=fk.OtherClass #>> <#=propName #>
{
get
{
var repo=<#=Namespace #>.<#=fk.OtherClass#>.GetRepo();
return from items in repo.GetAll()
where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#>
select items;
}
}
Dies ist die Vorlage für den Code, der für jeden Fremdschlüssel auf dem Tisch erzeugt wird. Sie müssen diesen Abschnitt ändern und vielleicht etwas Logik um diesen Code legen und etwas anderes für Ihre One-to-One-Schlüssel generieren.
Hoffe, dass Sie in die richtige Richtung weist.
Was ich tat, war eine partielle Klasse wie so erstellen:
public partial class Reading
{
private Book _book;
public Book Book
{
get
{
if (_book == null)
_book = this.Books.SingleOrDefault();
{
return _book;
}
}
set
{
_book = value;
}
}
}
Dann können Sie direkt Kind-Objekt-Buch-Lese des zuzugreifen, anstatt durch die IQueryable-Objekt.
Wenn jemand einen besseren Weg weiß, um dies zu tun, lassen Sie es mich bitte wissen, da dies alles ist, was ich nach vielen Kämpfen kommen könnte.
Edit: vergessen zu erwähnen, dass diese partielle Klasse muss im gleichen Namensraum wie die generierten Subsonic-Modelle sein