我有一个简单的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项目没有API项目中的“ App_Start”,那么如何初始化此映射?我觉得这里缺少明显的东西。
我目前的尝试是在我创建的QueryStore
类上简单地使用一个静态构造函数来容纳所有dapper查询。但是,这样做似乎什么也没发生:
public class QueryStore
{
public const string GetSomething = @"some query";
// more queries
static QueryStore()
{
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new CommonAssumptionsMap());
});
}
}
答案 0 :(得分:0)
因为这是可重用的类库项目,所以没有地方可以调用它。类库没有入口点。你必须要把戏。
定义一些InitDal
方法并将代码放入其中。调用者必须在开始使用数据访问层之前调用一次此方法。您需要通过文档,帮助文件等来教育调用者。这有助于将初始化/映射逻辑与其余DAL代码分开。
您所说的另一种选择(UPDATE 2 –现在已删除,作为一种尝试)是在您的一个班级上使用static
constructor。在映射进入图片之前,选择要实例化的类或访问其静态成员的类。
静态构造函数用于初始化任何静态数据,或执行仅需要执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用它。