Frage

Kann ich Teilklassen Eigenschaften zu schaffen, die zu einer Vereinigung Eigenschaft verweist der L2S Designer generiert. Auch werde ich die neue Eigenschaft in Abfragen verwendet werden kann?

Wie kann ich erreichen das?

War es hilfreich?

Lösung

Ja, das können Sie, aber Sie haben die gleichen Attribute wie die linq2sql erzeugte Eigenschaft heißt anzuwenden.

    [Association(Name="Test_TestData", Storage="_TestDatas", ThisKey="SomeId", OtherKey="OtherId")]
    public System.Data.Linq.EntitySet<TestData> MyTestDatas
    {
        get
        {
            return this.TestDatas;
        }
    }

TestDatas die ursprüngliche Beziehung zu sein.

Update: Eine Beispielabfrage lief ich:

        var context = new DataClasses1DataContext();
        var tests =
            from d in context.Tests
            where d.MyTestDatas.Any(md=>md.MyId == 2)
            select new
            {
                SomeId = d.SomeId,
                SomeData = d.SomeData,
                Tests = d.MyTestDatas
            };
        foreach (var test in tests)
        {
            var data = test.Tests.ToList();
        }

Andere Tipps

Wenn Sie nur einen anderen Namen der Vereinigung Eigenschaft geben wollen, verwenden Sie einfach die Seite Eigenschaft für den Verein und benennen Sie die Eltern und / oder Kind Eigentum. Das wird den Namen des EntityRef / EntitySet in der Klasse ändern.

Bearbeiten : Die Kehrseite einer separate Eigenschaft in einer Teilklasse ist, dass LINQ nicht in der Lage sein, es zu benutzen, wenn Abfragen zu erzeugen - im Wesentlichen werden Sie immer gezwungen, die Entitäten zu erhalten bevor Sie die zugehörigen Eigenschaften für das Objekt verwenden. Mit der Umbenennung können Sie LINQ die damit verbundenen Eigenschaften bei der Konstruktion der Abfrage verwenden, die in einer effizienteren Abfrage führen können. Zum Beispiel, wenn Sie wollen, Einheiten zu bekommen, wo eine damit verbundene Einrichtung eine bestimmte Eigenschaft Wert hat, können Sie das Attribut dekoriert Einheit mit LINQ die SQL generieren nur diese Attribut-Werte aus der Datenbank zu ziehen. Mit der naiven Eigenschaft Implementierung (dh einfach verweist auf die zugrunde liegende Beziehung Eigenschaft in der Tat Umbenennung), werden Sie gezwungen, zunächst alle Einheiten zu erhalten, tut dann die Filterung in Ihrer Anwendung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top