Frage

Ich habe eine Tabelle Abonnements genannt. Ich mag jede LINQ umleiten aus dieser Tabelle auswählen, um ein Moles Lambda, so dass nur drei Zeilen aus dieser Tabelle zurückgegeben werden - im Grunde mag ich in der Bypass-Aufruf an die Datenbank. Bisher ist der Code, den ich habe sieht wie folgt aus:

// lazy loader is here to handle successive calls to the 
// same table (otherwise there's an error)
// CM is a namespace alias
Table<CM.Subscriptions> subsTable = null;
MTheDataContext.AllInstances.SubscriptionsGet = (c) =>
    {
        if (subsTable == null)
        {
            subsTable = c.GetTable<CM.Subscriptions>();
            subsTable.Attach(new CM.Subscriptions() { SubID = 1, 
                 StatusCode = 1, CustomerID = custID1 });
            subsTable.Attach(new CM.Subscriptions() { SubID = 2, 
                 StatusCode = 1, CustomerID = custID2 });
            subsTable.Attach(new CM.Subscriptions() { SubID = 3, 
                 StatusCode = 4, CustomerID = custID3 });
            //  c.Refresh(RefreshMode.KeepCurrentValues, t);
        }
        return subsTable;
    };

Leider funktioniert es nicht. Ich habe in den Abonnements Tabelle in der Datenbank über 1000 Zeilen bekommt. Wenn ich einige Test-Code ausführen, die diese Umleitung in ihm hat, erhalte ich die 1000 Zeilen aus der Datenbank anstelle der drei Zeilen, die in der Redirect-Methode sind. Klar bin ich etwas fehlt. Was kann ich wieder tun, um nur diese drei Reihen , wenn alle Testcode wählt aus den Abonnements? Ich habe 3 Anrufe bekommt zu 3 verschiedenen Tabellen und sie alle brauchen Daten auszuwählen, die nicht in der DB ist es, diesen Test zur Arbeit zu kommen.

Zur Verdeutlichung: der Aufruf an die umgeleiteten Verfahren geschieht, wenn ich ein from sub in dc.Subscriptions ... wählen tun. Aber die zurückgegebenen Zeilen sind nicht die Zeilen, die in der Umleitung sind.

War es hilfreich?

Lösung

Sieht aus wie ich tat diese völlig falsch. Dies ist der richtige Ansatz:

// using System.Data.Linq.Moles; 
// CM is a namespace alias 
var subsList = new List<CM.Subscription>{
  new CM.Subscription() { SubscriptionID = subId1 },
  new CM.Subscription() { SubscriptionID = subId2 },
  new CM.Subscription() { SubscriptionID = subId3 }};

var subsTable = new MTable<CM.Subscription>();

subsTable.Bind(subsList.AsQueryable());

MTheDataContext.AllInstances.SubscriptionGet = (c) => { return subsTable; };

Mit diesem Code kann jede Auswahl aus den Abonnements Tabelle wird diese drei Datensätze zurück, nur.

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