Overview
In this guide, you can learn about the MongoDB C# Analyzer rules and attached messages. A rule evaluates different parts of your code and returns a message if a specific condition is met.
For example, the Analyzer might apply a rule if it detects a LINQ expression, which causes your IDE to display a message that contains the equivalent Query API expression. Each rule has a severity level of Info or Warning that impacts where the message might be recorded.
Rule Descriptions
The following sections describe each C# Analyzer rule, including the rule category, severity level, and description of the corresponding message. Each section also includes an example message.
MABuilders1001
The MABuilders1001 rule evaluates your code for builders expressions and triggers a message that contains the equivalent Query API expression.
Category |
|
Severity |
|
Notes | None |
The following code triggers the MABuilders1001 rule to display a message that shows the equivalent Query API expression:
var filter = Builders<Book>.Filter.Eq(b => b.Genre, "Theory") & Builders<Book>.Filter.Gte(b => b.Price, 10);
The following image displays the MABuilders1001 rule and information message:

Tip
To learn more about builders expressions, see the Analyze Builders Expressions guide.
MABuilders2001
The MABuilders2001 rule detects unsupported builders expressions and displays a translation error of the unsupported expression.
Category |
|
Severity |
|
Notes | To view examples of unsupported builders expressions, see the source code testing files. |
The following code triggers the MABuilders2001 rule to display a message that shows the unsupported builders expression:
var filter = Builders<Book>.Filter.Eq(b => b.Price + 2, 1);
The following image displays the MABuilders2001 rule and information message:

Tip
To learn more about builders expressions, see the Analyze Builders Expressions guide.
MALinq1001
The MALinq1001 rule evaluates your code for LINQ expressions and triggers a message that contains the equivalent Query API expression.
Category |
|
Severity |
|
Notes | This rule might apply differently depending on the value of your |
The following code triggers the MALinq1001 rule to display a message that shows the equivalent Query API expression:
var results = queryableColl .Where(b => b.Genre == "Theory") .OrderBy(b => b.Price);
The following image displays the MALinq1001 rule and information message:

Tip
To learn more about LINQ expressions, see the Analyze LINQ Expressions guide.
MALinq2001
The MALinq2001 rule detects unsupported LINQ expressions and displays a translation error of the unsupported expression.
Category |
|
Severity |
|
Notes | This rule might apply differently depending on the value of your DefaultLinqVersion configuration setting. To learn more,see the Analyzer Configuration Options. To view examples of unsupported LINQ expressions, see the |
The following code triggers the MALinq2001 rule to display a message that shows the unsupported LINQ expression:
var results = queryableColl.Where(b => b.GetHashCode() == 1);
The following image displays the MALinq2001 rule and information message:

Tip
To learn more about LINQ expressions, see the Analyze LINQ Expressions guide.
MALinq2002
The MALinq2002 rule detects if an expression is supported only in LINQ3 and displays a message that contains the equivalent Query API expression.
Category |
|
Severity |
|
Notes | This rule might apply differently depending on the value of your DefaultLinqVersion configuration setting. To learn more,see the Analyzer Configuration Options. To view examples of supported LINQ3 expressions, see the |
The following code triggers the MALinq2002 rule to display a message that shows the supported LINQ3 expression:
var results = queryableColl .Where(b => b.Price + 1 == 21) .Where(b => "Re-release: " + b.Title == "Re-release: Siddhartha");
The following image displays the MALinq2002 rule and information message:

Tip
To learn more about LINQ expressions, see the Analyze LINQ Expressions guide.
MAPoco1001
The MAPoco1001 rule evaluates your code for POCO declarations and triggers a message that contains the JSON representation of a sample instance. This rule evaluates some BSON serialization annotations such as BsonIgnore and BsonElement.
Category |
|
Severity |
|
Notes | This rule might apply differently depending on the value of your |
The following code triggers the MAPoco1001 rule to display a message that shows the JSON representation of a sample POCO:
public class Person { [] public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } [] public double Income { get; set; } }
The following image displays the MAPoco1001 rule and information message:

Tip
To learn more about POCO analysis, see the Analyze POCOs guide.
To learn more about POCO annotations, see the POCOs guide in the .NET/C# driver documentation.
MAPoco2001
The MAPoco2001 rule evaluates your code for unsupported serialization settings specified on a POCO declaration.
Category |
|
Severity |
|
Notes | This rule might apply differently depending on the value of your PocoAnalysisVerbosity configuration setting. To learn more,see the Analyzer Configuration Options. To view examples of unsupported POCO declarations, see the |
The following code triggers the MAPoco2001 rule to display a message that explains that the code includes an invalid serialization setting on the Date field:
public class Appointment { [] public decimal Date { get; set; } public string Doctor { get; set; } }
The following image displays the MAPoco2001 rule and information message:

Tip
To learn more about POCO analysis, see the Analyze POCOs guide.
To learn more about POCO annotations, see the POCOs guide in the .NET/C# driver documentation.