c# - 如何在 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 项目没有 API 项目中的“App_Start”,那么如何初始化此地图?我觉得我在这里遗漏了一些明显的东西。
我目前的尝试是简单地在QueryStore
我创建的类上使用一个静态构造函数,该类包含我所有的小巧查询。但是,执行此操作时似乎没有任何反应:
public class QueryStore
{
public const string GetSomething = @"some query";
// more queries
static QueryStore()
{
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new CommonAssumptionsMap());
});
}
}
解决方案
由于这是可重用的类库项目,所以没有地方可以调用它。类库没有入口点。你必须做一个把戏。
定义一些InitDal
方法并将代码放入其中。调用者必须在开始使用您的数据访问层之前调用此方法一次。您需要通过文档、帮助文件等教育调用者。这有助于将初始化/映射逻辑与 DAL 代码的其余部分分开。
您在问题中所述的其他替代方法(更新 2 - 现在已删除以尝试回答)是在您的一个类上使用static
构造函数。选择在映射出现之前被实例化的类或其静态成员被访问。
静态构造函数用于初始化任何静态数据,或执行只需要执行一次的特定操作。在创建第一个实例或引用任何静态成员之前自动调用它。
推荐阅读
- javascript - Ruby如何将值从单选按钮传递到控制器方法
- html - bootstrap 4 响应式表单,包含带有图像的两列部分
- embedded - STM32陀螺仪角度跟踪
- java - 将单击的项目位置存储在要在其他地方访问的变量中
- django - 使用 Prefetch Django 限制自引用模型的对象数
- javascript - 如何沟通和实时预览跨域应用程序?
- amazon-web-services - AWS 配额的真正最大值是多少?
- django - 如何在多个服务中复制 django 身份验证
- regex - 使用 regex101 获取第一个匹配字符串上方的所有行
- arrays - 裁剪具有预定位置的图像(矩阵或数组)