gpt4 book ai didi

nhibernate - 为应用程序中的所有程序集注册流畅的 nhibernate 映射

转载 作者:行者123 更新时间:2023-12-04 06:47:22 26 4
gpt4 key购买 nike

从一些代码开始:

sessionFactory = Fluently.Configure(cfg)
.Mappings(m =>
{
List<Assembly> allAssemblies = new List<Assembly>();
string path = Assembly.GetExecutingAssembly().Location;
foreach (string dll in Directory.GetFiles(path, "*.dll"))
{
m.FluentMappings.AddFromAssembly(Assembly.LoadFile(dll));
}
})
.BuildSessionFactory();

我对 nhibernate 和流畅的 nhibernate 都很陌生。上面的代码看起来应该可以工作,但在我看来它真的很难看。有没有更简洁的方法?

我遇到的一个问题是,调用上述代码的代码位于核心程序集中,并且无法引用某些需要映射的程序集,因为它们的程序集引用了核心程序集。所以我不能只用几次调用 AddFromAssemblyOf<T> .

有没有更干净的方法来做到这一点?

最佳答案

您可以创建一个自定义配置节点来放入您的配置文件。

你会有如下内容:

<configSections>
<section name="fluentConfigurationsSection" type="MyCoreAssembly.FluentConfigurationsSection, MyCoreAssembly"/>
</configSections>

<fluentConfigurationsSection>
<fluentConfigurations>
<clear />
<add name="Assembly1" assembly="MyAssemblyNotReferencedByCoreAssembly.Mapping.Fluent"
<add name="Assembly2" assembly="AnotherAssemblyNotReferencedByCoreAssembly.Mapping.Fluent"
<add name="Assembly3" assembly="OneMoreAssemblyNotReferencedByCoreAssembly.Mapping.Fluent"
</fluentConfigurations>
</fluentConfigurationsSection>

然后您的代码可以更改为:
sessionFactory = Fluently.Configure(cfg)
.Mappings(m =>
{
foreach(var config in MethodToGetFluentConfigSectionItems())
{
//load each assembly in config file
m.FluentMappings.AddFromAssembly(Assembly.Load(config.Assembly);
}
})
.BuildSessionFactory();

要创建自定义配置部分,您可以看到 here怎么做。

希望这可以帮助。

关于nhibernate - 为应用程序中的所有程序集注册流畅的 nhibernate 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com