我有一个场景,我有一个父类,如果Foo是唯一的,我们可以调用一些定义,然后是我选择调用Bar的子类。他们一起制作Foo Bar! :)
public class Foo
{
public Foo()
{
Bars = new List<Bar>();
}
// Internal id only, should probably not even map it
public virtual int Id { get; set; }
// A hashed searchable id
public virtual string UId { get; set; }
public virtual DateTime CreatedAt { get; set; }
public virtual DateTime UpdatedAt { get; set; }
public ICollection<Bar> Bars { get; private set; }
}
public class Bar
{
public virtual int Id { get; set; }
public virtual long Version { get; set; }
public virtual DateTime CreatedAt { get; set; }
public virtual SomeHash { get; set; }
public virtual Foo Foo { get; set; }
}
我可以很容易地用xml来映射这个。我不知道如何映射的是以下场景:我不需要在这里更新任何内容。一旦发生变化,我应该插入一个新行。永远不会更新或删除,我找不到任何有关解决此问题的信息,即使我知道这确实可行。如何告诉NHibernate版本表中的每个更改都应该导致插入?
答案 0 :(得分:2)
在Fluent中,您可以调用Readonly属性,该属性映射到access="readonly"
属性。
public class FooMap : ClassMap<Foo>
{
public FooMap()
{
ReadOnly();
Id(x => x.Id).ReadOnly();
// etc.
}
}
我从来没有使用它,所以我不确定它能否满足您的需求。
答案 1 :(得分:2)
看一下class元素的mutable属性。根据{{3}},将其设置为false可防止UPDATE和DELETE
答案 2 :(得分:0)
您可以在映射中使用空白<sql-update>
和<sql-delete>
标记。这些应该在类尝试更新或删除时调用。但是nhibernate仍然应该插入