Проверьте, ссылается ли элемент на решение в c # .net [duplicate]

Стандарт SQL: 2003 изменил некоторые правила приоритета, поэтому оператор JOIN имеет преимущество перед соединением «запятая». Это может фактически изменить результаты вашего запроса в зависимости от того, как он настроен. Это вызывает некоторые проблемы для некоторых людей, когда MySQL 5.0.12 переключился на соблюдение стандарта.

Итак, в вашем примере ваши запросы будут работать одинаково. Но если вы добавили третью таблицу: SELECT ... FROM table1, table2 JOIN table3 ON ... WHERE ...

До MySQL 5.0.12 сначала будут объединены table1 и table2, а затем table3 , Теперь (5.0.12 и далее), table2 и table3 соединяются сначала, а затем table1. Он не всегда меняет результаты, но может, и вы даже не можете этого понять.

Я больше не использую синтаксис «запятая», предпочитая второй пример. В любом случае, это намного более читаемо, условия JOIN с JOINs, а не разделенные на отдельный раздел запроса.

14
задан James Ko 6 August 2015 в 17:29
поделиться

1 ответ

Вероятно, вы ищете класс SymbolFinder и, в частности, метод FindAllReferences .

Похоже, некоторые неприятности знакомятся с Рослин. У меня есть серия сообщений в блогах, чтобы помочь людям познакомиться с Рослином под названием Learn Roslyn Now .

Поскольку @SLaks упоминает, что вам понадобится доступ к семантической модели, которую я расскажу в . Часть 7: Введение в семантическую модель

Вот образец, который показывает вам, как использовать API. Если вы в состоянии, я бы использовал MSBuildWorkspace и загрузил проект с диска, а не создавал его в AdHocWorkspace, как это.

var mscorlib = PortableExecutableReference.CreateFromAssembly(typeof(object).Assembly);
var ws = new AdhocWorkspace();
//Create new solution
var solId = SolutionId.CreateNewId();
var solutionInfo = SolutionInfo.Create(solId, VersionStamp.Create());
//Create new project
var project = ws.AddProject("Sample", "C#");
project = project.AddMetadataReference(mscorlib);
//Add project to workspace
ws.TryApplyChanges(project.Solution);
string text = @"
class C
{
    void M()
    {
        M();
        M();
    }
}";
var sourceText = SourceText.From(text);
//Create new document
var doc = ws.AddDocument(project.Id, "NewDoc", sourceText);
//Get the semantic model
var model = doc.GetSemanticModelAsync().Result;
//Get the syntax node for the first invocation to M()
var methodInvocation = doc.GetSyntaxRootAsync().Result.DescendantNodes().OfType<InvocationExpressionSyntax>().First();
var methodSymbol = model.GetSymbolInfo(methodInvocation).Symbol;
//Finds all references to M()
var referencesToM = SymbolFinder.FindReferencesAsync(methodSymbol,  doc.Project.Solution).Result;
31
ответ дан JoshVarty 28 August 2018 в 04:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: