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

时间:2011-02-15 09:19:02

标签: sql nhibernate fluent-nhibernate mapping properties

在应用程序中,我有一堆实体类NHibernate映射,它有两个常见属性:{GUID Id,string Tag}(它是通过抽象基类实现的)。

在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")

1 个答案:

答案 0 :(得分:0)

从形式上讲,您可以使用实体持久性的自定义实现来完成它。

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