gpt4 book ai didi

NHibernate:找出属性是否映射到字段

转载 作者:行者123 更新时间:2023-12-03 19:07:26 24 4
gpt4 key购买 nike

有什么方法可以查明属性是否映射到字段。我希望这能生成类似“通用搜索”的东西:

    string[] words.
words = search.Split(' ');
Type type = typeof(T);

Disjunction disjunction = new Disjunction();
foreach (System.Reflection.PropertyInfo property in type.GetProperties())
{
if ((property.PropertyType == typeof(string)))
{

foreach (string word in words)
{
disjunction.Add(
Expression.InsensitiveLike(
property.Name,
"%" + word + "%"));
}
}
}

如果我添加一个未映射到 NHibernate 的属性,搜索将抛出一个 NHibernate.QueryException,其描述为“无法解析属性:Text1 of: C”

我正在映射这样的属性:

class C
{
[Property(0, Column = "comment")]
public virtual string Comment {get; set;}
}

最佳答案

使用 NHibernate 元数据 API。

ISessionFactory sessionFactory;

Type type = typeof(T);
IClassMetadata meta = sessionFactory.GetClassMetadata(type);

Disjunction disjunction = new Disjunction();
foreach (string mappedPropertyName in meta.PropertyNames)
{
IType propertyType = meta.GetPropertyType(mappedPropertyName);

if (propertyType == NHibernateUtil.String)
{
foreach (string word in words)
{
disjunction.Add(
Expression.InsensitiveLike(
mappedPropertyName,
"%" + word + "%"));
}
}
}

关于NHibernate:找出属性是否映射到字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856746/

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