Quelqu'un peut-il s'il vous plaît expliquer ci-dessous pour moi. La première est comment j'appelle la méthode et le second bit est la méthode LINQ.Aidez-moi à comprendre MY`Using` et `DataContext`
Ma curiosité provient du fait que j'obtiens une erreur context
si je ne commente pas la partie using
.
Pourquoi? Je ne comprends pas complètement using
et context's
. Et je voudrais mieux comprendre cela.
Guid workerID = new Guid(new ConnectDAL.DAL.Security().GetUserIDByUserLogin(HUD.CurrentUser));
var myMembers = BLLCmo.GetAllMembers(workerID);
if (myMembers.Rows.Count != 0)
{
dgvMyMembers.DataSource = myMembers;
}
else
{
var allMembers = BLLCmo.GetAllMembers();
dgvMyMembers.DataSource = allMembers;
}
internal static CmoDataContext context = new CmoDataContext();
public static DataTable GetAllMembers()
{
DataTable dataTable;
//using (context)
//{
var AllEnrollees = from enrollment in context.tblCMOEnrollments
select new
{
enrollment.ADRCReferralID,
enrollment.ClientID,
enrollment.CMONurseID,
enrollment.CMOSocialWorkerID,
enrollment.DisenrollmentDate,
enrollment.DisenrollmentReasonID,
enrollment.EconomicSupportWorkerID,
enrollment.EnrollmentDate
};
dataTable = AllEnrollees.CopyLinqToDataTable();
//}
return dataTable;
}
Je ne comprends toujours pas. Je comprends que les «usings» disposent de «choses», ce que je ne comprends pas, c'est pourquoi mon indicatif d'appel CARES? J'assimile les données à un DataTable et j'accède seulement au Contexte dans le DAL sur l'appel ainsi je ne comprends pas la partie de «long terme». –
"interne statique CmoDataContext context = new CmoDataContext();" signifie que votre contexte n'est initialisé qu'une seule fois. Vous appelez GetAllMembers() deux fois de suite.La première fois que vous l'appelez, votre contexte a été initialisé et est prêt à partir. la deuxième fois que vous l'appelez, il est disposé. Vos problèmes seraient résolus si vous déplaciez la portée de votre contexte au niveau de la fonction. – JustLoren
Parce que le contexte est statique, la deuxième fois que vous essayez d'y accéder, il est déjà éliminé. D'où l'erreur. –