private static DatabaseAccessingMethodCallExtractor <FakeORMToolType> GetDDAccessingMethodCallExtractorReturningOneMethodCall() { //Create fake database query for db accessing method call var dbEntityDeclaration = new DatabaseEntityDeclaration <FakeORMToolType>("Employee", null); var dbEntityDeclarationsReturnedByDbQuery = new HashSet <DatabaseEntityDeclaration <FakeORMToolType> >() { dbEntityDeclaration }; var dbQueryVariable = new DatabaseQueryVariable <FakeORMToolType>("", null); //Create fake CompilationInfo for db accessing method call var methodDeclarationCompilationInfo = new CompilationInfo(null, null); // var methodDeclarationContainingDbAccessingMethodCall = new MethodDeclaration("GetEmployee", methodDeclarationCompilationInfo); var dbAccessingMethodCallCompilationInfo = new CompilationInfo(null, null); //Create fake db accessing method call DatabaseAccessingMethodCallStatement <FakeORMToolType> dbAccessingMethodCall = new DatabaseAccessingMethodCallStatement <FakeORMToolType>("", dbEntityDeclarationsReturnedByDbQuery, dbAccessingMethodCallCompilationInfo); dbAccessingMethodCall.SetDatabaseQueryVariable(dbQueryVariable); var fakeDbAccessingMethodCallExt = new Mock <DatabaseAccessingMethodCallExtractor <FakeORMToolType> >(); var dbAccessingMethodCallsToReturn = new HashSet <DatabaseAccessingMethodCallStatement <FakeORMToolType> >() { dbAccessingMethodCall }; fakeDbAccessingMethodCallExt.Setup(f => f.DatabaseAccessingMethodCalls).Returns(dbAccessingMethodCallsToReturn); return(fakeDbAccessingMethodCallExt.Object); }
public void WithDatabaseAccessingMEthodCallLoadingVariable(DatabaseEntityVariable <LINQToSQL> dbEntityVariable) { var customerEntityDeclaration = new DatabaseEntityDeclaration <LINQToSQL>("Customer"); var orderEntityDeclaration = new DatabaseEntityDeclaration <LINQToSQL>("Order"); var entityDeclarationsUsedInQuery = new List <DatabaseEntityDeclaration <LINQToSQL> >() { customerEntityDeclaration }; DatabaseQueryVariable databaseQueryVariable = null; var dbQuery = new DatabaseQuery <LINQToSQL>("(from c in dc.Customers where c.Id=1 select c)", entityDeclarationsUsedInQuery, databaseQueryVariable); var dbAccessingMethodCall = new DatabaseAccessingMethodCallStatement <LINQToSQL>(dbQuery, null); var entityDeclarationsLoadedByDbCall = new List <DatabaseEntityDeclaration <LINQToSQL> >() { customerEntityDeclaration, orderEntityDeclaration }; dbAccessingMethodCall.SetLoadedEntityDeclarations(entityDeclarationsLoadedByDbCall); var dbAccessingMethodCallNode = new ORMModelNode(dbAccessingMethodCall); Tree.RootNode.ChildNodes.Add(dbAccessingMethodCallNode); }
private bool AncestorNodeForSameLineIsAlreadyFound(SyntaxNode node) { DatabaseAccessingMethodCallStatement <T> existingDbAccessingCall = (from d in DatabaseAccessingMethodCalls from x in d.CompilationInfo.SyntaxNode.DescendantNodes() where x.Span.ToString() == node.Span.ToString() select d).FirstOrDefault(); return(existingDbAccessingCall != null); }
private DatabaseAccessingMethodCallStatement <FakeORMToolType> GetDatabaseAccessingMethodCall() { var entityDeclarationsUsedInQuery = new HashSet <DatabaseEntityDeclaration <FakeORMToolType> >() { customerEntityDeclaration }; string queryText = "(from c in dc.Customers where c.Id=1 select c)"; dbAccessingMethodCall = new DatabaseAccessingMethodCallStatement <FakeORMToolType>(queryText, entityDeclarationsUsedInQuery, null); return(dbAccessingMethodCall); }
public ORMModelTreeGenerator WithEagerLoadingDatabaseAccessingMethodCall() { dbAccessingMethodCall = GetDatabaseAccessingMethodCall(); var entityDeclarationsLoadedByDbCall = new List <DatabaseEntityDeclaration <LINQToSQL> >() { customerEntityDeclaration, orderEntityDeclaration }; dbAccessingMethodCall.SetLoadedEntityDeclarations(entityDeclarationsLoadedByDbCall); var dbAccessingMethodCallNode = new ORMModelNode(dbAccessingMethodCall); Tree.RootNode.ChildNodes.Add(dbAccessingMethodCallNode); return(this); }
private void AddDatabaseAccessingCall(SyntaxNode node, SemanticModel semanticModel, DatabaseQueryVariableDeclaration <T> queryVariableUsedInCall) { string queryText = node.GetText().ToString(); HashSet <DatabaseEntityDeclaration <T> > databaseEntityDeclarationsUsedInQuery = GetDatabaseEntityTypesInQuery(node, semanticModel); var compilationInfo = node.GetCompilationInfo(semanticModel); if (!AncestorNodeForSameLineIsAlreadyFound(node)) { RemoveAnyDescendantNodeAlreadyFound(node); var result = new DatabaseAccessingMethodCallStatement <T>(queryText, databaseEntityDeclarationsUsedInQuery, compilationInfo); if (queryVariableUsedInCall != null) { result.SetDatabaseQueryVariable(queryVariableUsedInCall); } DatabaseAccessingMethodCalls.Add(result); } }