如何在 DAL 项目中初始化地图?
How can you initialize a map in a DAL project?
我有 API 项目、DAL 项目(Class 库)、共享模型项目的简单解决方案结构。在 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 项目(Class 库)中创建了它,因为这是它需要在存储库中使用的地方,它会调用以获取假设。但是,我在哪里添加这个:
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new AssumptionsMap());
});
我的 DAL 项目没有 API 项目中的 'App_Start',那么如何初始化此映射?我觉得我在这里遗漏了一些明显的东西。
我目前的尝试是简单地在我创建的 QueryStore
class 上使用静态构造函数来容纳我所有的小巧查询。但是,这样做似乎没有任何反应:
public class QueryStore
{
public const string GetSomething = @"some query";
// more queries
static QueryStore()
{
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new CommonAssumptionsMap());
});
}
}
由于这是可重复使用的 Class 库项目,因此没有地方可以调用它。 Class 库没有入口点。你得来个把戏。
定义一些InitDal
方法并将代码放入其中。调用者必须在开始使用数据访问层之前调用此方法一次。您需要通过文档、帮助文件等对调用者进行培训。这有助于将 initialization/mapping 逻辑与 DAL 代码的其余部分分开。
您在问题中提到的其他替代方案(更新 2 -- 现在已删除作为尝试回答)是在您的 class 之一上使用 static
constructor。选择要实例化的 class 或在您的映射出现之前访问其静态成员。
A static constructor is used to initialize any static data, or to perform a particular action that needs to be performed once only. It is called automatically before the first instance is created or any static members are referenced.
我有 API 项目、DAL 项目(Class 库)、共享模型项目的简单解决方案结构。在 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 项目(Class 库)中创建了它,因为这是它需要在存储库中使用的地方,它会调用以获取假设。但是,我在哪里添加这个:
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new AssumptionsMap());
});
我的 DAL 项目没有 API 项目中的 'App_Start',那么如何初始化此映射?我觉得我在这里遗漏了一些明显的东西。
我目前的尝试是简单地在我创建的 QueryStore
class 上使用静态构造函数来容纳我所有的小巧查询。但是,这样做似乎没有任何反应:
public class QueryStore
{
public const string GetSomething = @"some query";
// more queries
static QueryStore()
{
FluentMapper.Initialize(cfig =>
{
cfig.AddMap(new CommonAssumptionsMap());
});
}
}
由于这是可重复使用的 Class 库项目,因此没有地方可以调用它。 Class 库没有入口点。你得来个把戏。
定义一些InitDal
方法并将代码放入其中。调用者必须在开始使用数据访问层之前调用此方法一次。您需要通过文档、帮助文件等对调用者进行培训。这有助于将 initialization/mapping 逻辑与 DAL 代码的其余部分分开。
您在问题中提到的其他替代方案(更新 2 -- 现在已删除作为尝试回答)是在您的 class 之一上使用 static
constructor。选择要实例化的 class 或在您的映射出现之前访问其静态成员。
A static constructor is used to initialize any static data, or to perform a particular action that needs to be performed once only. It is called automatically before the first instance is created or any static members are referenced.