流畅的 NHibernate 反射映射

发布于 2024-10-15 12:13:00 字数 130 浏览 10 评论 0原文

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

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

有什么想法吗?

I'd like to parse through an Fluent NHibernate mapping file so I can get the table name and column names that are specified in there.

Loading the assembly and reflecting the type as ClassMap isn't a problem but that class only get methods to set the table and column names - nothing to get the names back again.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

‖放下 2024-10-22 12:13:00

使用 Reflector,看起来 Table 方法具有以下签名:

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

Columns将会困难得多,因为它将属性、引用和集合分开。例如。

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;
}

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

Using Reflector, it looks like Table method has this signature:

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

Columns will be a lot harder as it keeps properties, references, and collections separate. Eg.

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;
}

In theory though you could get the private fields attributes, properties, and references via reflection and get the information that way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文