Как вы можете инициализировать карту в проекте DAL?
У меня есть простая структура решения проекта API, проекта DAL (библиотека классов), проекта совместного использования моделей. Внутри проекта DAL я создал собственную карту для одного из моих POCO:
internal class AssumptionsMap : EntityMap<Assumptions>
{
internal AssumptionsMap()
{
Map(a => a.Rate).ToColumn("InitialRate");
Map(a => a.Credit).ToColumn("CredValue");
Map(a => a.CreditType).ToColumn("CredType");
}
}
Я создал это в проекте DAL (библиотека классов), поскольку именно здесь его нужно будет использовать в хранилище, которое вызывает для получения предположений. Тем не менее, где я могу добавить это:
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new AssumptionsMap());
});
Мой проект DAL не имеет App_Start, как в проекте API, так как же эту карту можно инициализировать? Я чувствую, что упускаю что-то очевидное здесь.
Моя текущая попытка состоит в том, чтобы просто использовать статический конструктор на QueryStore
класс, который я создал, который содержит все мои запросы. Тем не менее, ничего не происходит при этом:
public class QueryStore
{
public const string GetSomething = @"some query";
// more queries
static QueryStore()
{
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new CommonAssumptionsMap());
});
}
}
1 ответ
Так как это проект библиотеки классов, который можно использовать повторно, назвать его некуда. Библиотеки классов не имеют точки входа. Вы должны сделать трюк.
Определить некоторые InitDal
метод и положить код в нем. Вызывающий должен вызвать этот метод один раз, прежде чем начать использовать свой уровень доступа к данным. Вы должны обучить абонента с помощью документации, файла справки и т. Д. Это помогает отделить логику инициализации / отображения от остальной части кода DAL.
Другой вариант, который вы указали в вопросе (ОБНОВЛЕНИЕ 2 - теперь удалено как попытка ответить), это использовать static
конструктор на одном из ваших классов. Выберите класс, для которого создается экземпляр, или к его статическому члену обращаются до того, как ваше отображение появляется на рисунке.
Статический конструктор используется для инициализации любых статических данных или для выполнения определенного действия, которое необходимо выполнить только один раз. Он вызывается автоматически перед созданием первого экземпляра или ссылками на любые статические элементы.