Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fluentnhibernate:默认的\u模式和公式_Nhibernate_Fluent Nhibernate - Fatal编程技术网

fluentnhibernate:默认的\u模式和公式

fluentnhibernate:默认的\u模式和公式,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我注意到默认的_模式设置只对生成的 SQL。 用户提供的SQL(在我的例子中:通过Map().Formula())似乎不受影响 默认情况下,是_模式设置 这有什么办法吗? 我尝试了这种天真的方法,尝试读取默认的_模式 从映射类中的配置,然后更改SQL 在.Formula()调用中包含默认的_模式,但 从映射文件访问配置似乎不是件小事 任何帮助都将不胜感激 问候,, 我自己解决了这个问题 由于似乎不可能访问类映射中的任何配置(我不想在那里手动读取配置文件),并且由于不能通过某些IoC框架将依赖项注

我注意到默认的_模式设置只对生成的 SQL。 用户提供的SQL(在我的例子中:通过Map().Formula())似乎不受影响 默认情况下,是_模式设置

这有什么办法吗? 我尝试了这种天真的方法,尝试读取默认的_模式 从映射类中的配置,然后更改SQL 在.Formula()调用中包含默认的_模式,但 从映射文件访问配置似乎不是件小事

任何帮助都将不胜感激

问候,, 我自己解决了这个问题

由于似乎不可能访问类映射中的任何配置(我不想在那里手动读取配置文件),并且由于不能通过某些IoC框架将依赖项注入类映射中(类映射需要无参数构造函数), 我必须用“老式的方式”在一个单身班上做:

单身人士:

公共类DefaultSchemaProvider { 私有静态DefaultSchemaProvider _instance=null; 私有字符串_defaultSchema=null

public static DefaultSchemaProvider Instance
{
    get
    {
        if (_instance == null)
            _instance = new DefaultSchemaProvider();
        return _instance;
    }
}

public void SetDefaultSchema(string defaultSchema)
{
    _defaultSchema = defaultSchema;
}

public string GetDefaultSchema()
{
    return _defaultSchema;
}
}

配置期间:

var nhibernateCfg = new NHibernate.Cfg.Configuration();
nhibernateCfg.Configure(ConfigurationFile);
DefaultSchemaProvider.Instance.SetDefaultSchema(nhibernateCfg.GetProperty("default_schema"));
在类映射中:

public class CustomerMap : ClassMap<Customer>
{
    public CustomerMap()
    {
        var defaultSchema = DefaultSchemaProvider.Instance.GetDefaultSchema() + ".";

        Table("Customers");

        Id(x => x.Id).Column("Customer_id");
        Map(x => x.Description).Column("Name");
        Component(c => c.CustomerType, c =>
        {
            c.Map(x => x.Id).Column("Customer_type");           
            c.Map(x => x.Description).Formula(
               "(SELECT ct.value FROM " + defaultSchema + "customer_types ct WHERE ct.field='description' AND ct.typeid = Customer_type)");
        });
        HasMany(x => x.ArticleLinks).KeyColumn("VENR").Access.CamelCaseField(Prefix.Underscore);
    }                
}
公共类CustomerMap:ClassMap
{
公共客户映射()
{
var defaultSchema=DefaultSchemaProvider.Instance.GetDefaultSchema()+“;
表(“客户”);
Id(x=>x.Id).列(“客户Id”);
映射(x=>x.Description)。列(“名称”);
组件(c=>c.CustomerType,c=>
{
c、 Map(x=>x.Id).列(“客户类型”);
c、 映射(x=>x.Description)。公式(
“(从“+defaultSchema+”客户类型ct中选择ct.value,其中ct.field='description'和ct.typeid=客户类型)”;
});
HasMany(x=>x.ArticleLinks).KeyColumn(“VENR”).Access.CamelCaseField(前缀.下划线);
}                
}

如果有人来这里,可以使用构造函数参数创建类映射<代码>变量模型=新的PersistenceModel();Add(新的MyClassMap(someparameter));流畅地…映射(m=>m.UsePersistenceModel(model)…)