Ах, я только что посмотрел.Кажется, статическая переменная по какой-то причине не инициализирована.
Пока вы можете решить эту проблему, выполнив следующее:
static db _db = new db(
global::data.Properties.Settings.Default.nanocrmConnectionString,
new AttributeMappingSource());
Довольно странно, что mappingSource
все равнобыть нулевым.
Думая об этом сейчас, это может быть то, как частичные классы соединяются вместе.По какой-то причине он использует ваш код в качестве «префикса» всего класса.Кажется, как я и ожидал, mappingSource
не инициализируется при инициализации _db
.
Дальнейшее объяснение причины проблемы.
Порядок инициализациистатические члены не определены, но обычно они имеют тенденцию быть в порядке.
Возьмем следующую программу в качестве примера для дальнейшего усложнения вещей.
Main.cs
class Printer
{
public Printer(string s)
{
Console.WriteLine(s);
}
}
partial class Program
{
static void Main()
{
new Program();
Console.ReadLine();
}
}
X.cs
partial class Program
{
static Printer x = new Printer("x");
}
Y.cs
partial class Program
{
static Printer y = new Printer("y");
}
Z.cs
partial class Program
{
static Printer z = new Printer("z");
}
Теперь, в зависимости от способа подачи компилятором классов, порядок инициализации может измениться.
Try:
- csc Main.cs X.cs Y.cs Z.cs
- csc Main.cs Y.cs Z.cs X.cs
- csc Main.cs Y.cs X.cs Z.cs
Я подозреваю, что вы будете видеть разные результаты каждый раз.