【问题标题】:Fluent NHibernate reflection mappingsFluent NHibernate 反射映射
【发布时间】:2011-06-18 13:11:22
【问题描述】:

我想通过 Fluent NHibernate 映射文件进行解析,以便获取其中指定的表名和列名。

加载程序集并将类型反映为 ClassMap 不是问题,但该类仅获取设置表和列名称的方法 - 无法再次获取名称。

有什么想法吗?

【问题讨论】:

    标签: c# nhibernate fluent mappings


    【解决方案1】:

    使用Reflector,看起来 Table 方法有这个签名:

    public void Table(string tableName)
    {
        this.attributes.Set<string>(x => x.TableName, tableName);
    }
    

    列将变得更加困难,因为它将属性、引用和集合分开。例如。

    protected virtual PropertyPart Map(PropertyInfo property, string columnName)
    {
        PropertyPart propertyMap = new PropertyPart(property, typeof(T));
        if (!string.IsNullOrEmpty(columnName))
        {
            propertyMap.Column(columnName);
        }
        this.properties.Add(propertyMap);
        return propertyMap;
    }
    

    虽然理论上您可以通过反射获取私有字段的属性、属性和引用,并通过这种方式获取信息。

    【讨论】:

    • 原来我并不像我想象的那样需要这个。显然,nHibernate 中的 CreateQuery 方法使用对象名称解析字符串并将类字段名称映射到列名称 - 仍在学习 nhibernate :\ 我最终编写了自己的 Update 方法,该方法采用字段的 lambda 表达式列表更新和新值以及条件子句的 lambda 表达式列表,而不是使用 nHibernate 为每次更新加载每个实体。
    猜你喜欢
    • 2011-04-10
    • 1970-01-01
    • 2012-04-03
    • 2012-10-19
    • 2013-01-07
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多