如何在NHibernate中为实体属性实现自定义SQL语句

问题描述:

在应用程序中,我有一堆实体类NHibernate映射与两个公共属性{GUID ID,字符串标记}(它通过抽象基类实现)。如何在NHibernate中为实体属性实现自定义SQL语句

在DB有与公共列每个实体表:

dbo.[EntityName] { uniqueidentifier Id, ... etc. } 

也有是用于存储有关每个实体的一些全球性的标签信息的表:

dbo.EntityTag { uniqueidentifier Id, nvarchar Tag } 

此表是严格需要它,它是强制性的在Db中。

我该如何实现自定义SQL逻辑来更新,选择并在Tag属性中插入值?

例如在FluentNhibernate这将是有帮助的类似

Map(x => x.Tag) 
    .Insert("INSERT dbo.EntityTag VALUES({Id},{Tag})") 
    .Update("UPDATE dbo.EntityTag SET Tag={Tag} WHERE Id = {ID}") 
    .SELECT("...") 
    .Delete("... etc") 

从形式上来讲,你可以使用实体留存的自定义实现这样做。

但是,在这种情况下,使用<join>映射似乎更容易。

+0

非常感谢。 是一个解决方案。 – Michael 2011-02-15 13:41:21