Есть ли недостатки в передаче объекта DataContext в качестве параметра 'ref'?

Итак, в моем проекте EF4 я открыл частичные классы как самого файла DataContext, так и пары таблиц / объектов, созданных DataContext. Однако, если я открою класс «Продукты» как частичный, не будет (насколько я могу судить) прямой ссылки от продукта к классу DataContext, который его породил.

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!
    }
}

Но внутри по частичному продукту class, я бы хотел иметь возможность напрямую запрашивать базу данных, и мне очень нравится иметь возможность инициализировать только один экземпляр DataContext и использовать его для моих запросов страницы aspx.cs, а также запросов, выполняемых из частичных классов, которые вызываются со страницы aspx.cs.

Итак, мое решение до сих пор это передать экземпляр DataContext в качестве параметра 'ref' методам моего частичного класса, которым нужно ковыряться в базе данных. Вот частичный класс:

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

Так есть ли обратная сторона в передаче моего объекта DataContext в качестве параметра ref любым методам частичного класса, которым требуется доступ к базе данных через это соединение? Одним из преимуществ является то, что после его передачи в качестве ссылки я могу добавить к нему новые сущности AddObject () из этих частичных классов, и как только мои SaveChanges обратятся к моей странице asp.cs, ВСЕ изменения (из aspx и из методов частичного класса) выполняются.

5
задан Graham 9 March 2011 в 15:12
поделиться