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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
            }
        }