首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate.Search映射未知类

NHibernate.Search映射未知类
EN

Stack Overflow用户
提问于 2011-09-14 21:34:00
回答 1查看 155关注 0票数 0

程序集包含的类如下

代码语言:javascript
复制
public class CustomPage : Page, ISearchable
{
    [Searchable]
    public virtual string CustomText { get; set; }
    public virtual string SearchableText { get; set; }
}

我想把它映射到Lucene.net。我不能向这些类添加属性,也不能使用ISearchMapping,因为类型是未知的(不引用该程序集)。

我怎样才能做映射?所有可用的信息都是所有类型都继承并实现了ISearchable。要映射的唯一属性是SearchableText (在保存所有具有可搜索性的属性之前,都会连接到该属性)。

EN

回答 1

Stack Overflow用户

发布于 2011-11-21 18:42:19

您可以使用此设计泛型DAO对象。我使用这个实现构建了一个完整的基础设施。您可以创建一个泛型DAO,并将它与任何类型的映射对象一起使用。

代码语言:javascript
复制
public GenericDAO<T>
{
     public List<T> Search(Criteria[] criterias)
     {}

     public T Save(T entity)
     {
     }

     public T Update(T entity)
     {
     }

     Public void Delete(T entity)
     {
     }

}

// any mapped object.
public MyMappedObject
{
   public virtual string ID {get; set;}
   public virtual string Name {get; set;}

   public MyMappedObject()
   {
       ID = Guid.NewGuid().ToString();
   }
}

// usage in code.
MyMappedObejct myMappedObjectInstance = new MyMappedObejct();
myMappedObjectInstance.Name = "new name";

GenericDAO<MyMappedObejct> myMappedObejctDao = new GenericDAO<MyMappedObject>();

// Insert
myMappedObjectInstance = myMappedObejctDao.Save(myMappedObjectInstance);

// Select
MyMappedObejct myMappedObjectInstance = myMappedObejctDao.Search().First();

// Update
myMappedObjectInstance.Name = "another name";
myMappedObjectInstance = myMappedObejctDao.Update(myMappedObjectInstance);

// Delete
myMappedObejctDao.Delete(myMappedObjectInstance);

这是一个非常简单的例子,我在一百多个类中做了一个更复杂的版本,它工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7423257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档