¿cómo puedo usar para redirigir Moles selección de las tablas a través de LINQ?

StackOverflow https://stackoverflow.com/questions/4485502

  •  11-10-2019
  •  | 
  •  

Pregunta

Tengo una tabla llamada Suscripciones. Me gustaría volver a dirigir cualquier LINQ seleccionar de esa tabla a un lambda Moles de manera que sólo 3 filas se devuelven desde esa mesa - básicamente quiero derivación de la llamada a la base de datos. Hasta el momento, el código que tiene el aspecto siguiente:

// 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;
    };

Por desgracia, no funciona. Tengo aproximadamente 1000 filas de la tabla en la base de datos de suscripciones. Cuando corro algún código de prueba que tiene esta redirección en él, consigo las 1000 filas de la base de datos en lugar de las 3 filas que están en el método de redirección. Es evidente que me falta algo. ¿Qué puedo hacer yo para volver sólo estos 3 filas cada vez que selecciona ningún código de prueba de las suscripciones? Tengo 3 llamadas a 3 mesas diferentes y todos ellos necesidad de seleccionar los datos que no está en la base de datos para obtener esta prueba para el trabajo.

Aclaración: la llamada al método redirigida sucede cuando hago una from sub in dc.Subscriptions ... seleccionar. Pero las filas devueltas no son las filas que se encuentran en la redirección.

¿Fue útil?

Solución

Parece que estaba haciendo esto completamente equivocado. Este es el enfoque correcto:

// 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; };

Con este código, cualquier selección de la tabla de suscripciones devolverá sólo estos tres registros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top