Así que en mi proyecto EF4 he abierto las clases parciales tanto del archivo DataContext en sí, como de un par de Table/Object generado por DataContext. Sin embargo, si abro una clase de "Productos" como parcial, no hay (por lo que puedo decir) un enlace directo desde la copia de seguridad del producto a la clase DataContext que lo engendró.¿Alguna desventaja al pasar alrededor de un objeto DataContext como un parámetro 'ref'?
public partial class Product
{
public DataContext GetContext()
{
return this.DataContext;
// FAILS!!! No connection from 'this' to DataContext
// makes sense because "Product" isn't REALLY derived from DataContext
//...but still, I want this to work!
}
}
Pero interior de la clase de producto parcial, de seguro que le gustaría ser capaz de consultar la base de datos directamente, y realmente me gustaría poder inicializar sólo una instancia de DataContext y utilizarlo para mi página aspx.cs consultas, así como las consultas ejecutadas desde las clases parciales que se llaman desde la página aspx.cs.
Así que mi solución hasta ahora es pasar en la instancia de DataContext como un parámetro 'ref' a los métodos de mi clase parcial que necesitan hurgar en la base de datos. Aquí está la clase parcial:
public partial class Complaint
{
public IEnumerable<Person> GetPByRole(InvestigationRole roleEnum, ref DataContext dbase)
{
var role = dbase.GetRole(roleEnum);
return this.PeopleOnInvestigations
.Where(x => x.InvestigationRoleID == 1)
.Select(x => x.Person);
}
}
Entonces, ¿hay un inconveniente a pasar alrededor de mi objeto DataContext como parámetro de referencia para los métodos de la clase parciales que necesitan acceso a la base de datos a través de esta conexión? Una de las ventajas es que una vez que se transfiere como una referencia, puedo "AddObject()" entidades nuevas desde dentro de estas clases parciales, y una vez que mi SaveChanges vuelve a llamar en mi página asp.cs se realiza, TODOS los cambios (desde el aspx y de los métodos de clase parciales) se ejecuta.
¿DataContext es una estructura o clase? –
'DataContext' es la clase LINQ to SQL. ¿Estás seguro de que estás utilizando Entity Framework? – Steven
Yup EF4 en VS 2010. Por 'DataContext' me refiero a 'el gran objeto creado por EF desde mi modelo de datos', es decir, el archivo EDMX. – Graham