2011-01-25 105 views
1

我有一些麻烦找出适合以下数据模型和域对象的FluentNHibernate映射语法。下面是我的工作对数据模型: enter image description hereFluentNHibernate映射语法帮助需要

而且我想下面的域对象映射到模型:

namespace FluentNHibernateSandbox.Entities 
{ 
    public abstract class EntityBase 
    { 
     public virtual long Id { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Attribute : EntityBase 
    { 
     public virtual string Name { get; set; } 
     public virtual string Label { get; set; } 
     public virtual string Description { get; set; } 
     public virtual int SortOrder { get; set; } 
     public virtual Group Group { get; set; } 
     public virtual Editor Editor { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Group : EntityBase 
    { 
     public virtual string Name { get; set; } 
     public virtual string Label { get; set; } 
     public virtual string Description { get; set; } 
     public virtual int SortOrder { get; set; } 
     public virtual IList<Attribute> Attributes { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Editor : EntityBase 
    { 
     public virtual string ViewName { get; set; } 
     public virtual string WorkerClassName { get; set; } 
    } 
} 

一般情况下,我最终要的似乎并不像它应该是很难做到的,但是我在尝试了几乎所有我能想到的映射组合之后,似乎仍然无法做到。我只需要我的属性来引用它所属的组,并为编辑指定一个编辑器,并且每个组都应该包含属于它的属性的集合。这对夫妇多对多的连接表似乎给了我适合。特别是APPLICATION_ATTRIBUTE表。最终,我只想要我的应用程序所关注的属性,在这种情况下,那些APPLICATION_ID为4的属性。

任何帮助将不胜感激。谢谢。

回答

2

真的有点惊讶没有人回应这个在所有,但无论如何。我们提出的这种映射情况的答案/解决方案,我试图避免开始,但实际上是最好的方法,是在数据库中创建一些自定义视图,将所有的我需要的特定于应用程序的数据,然后将我的应用程序的域对象映射到这些视图。这至少部分是因为我需要从这些表中获得的信息对于这个应用程序来说是只读的,但即使我需要写入表格,我也很确定(虽然没有验证过,在这种情况下真的需要),我可以设置我的视图是可写的,这也可以工作。

Hat tip to @robconery

+0

LOL无价。对你做好事很有用 - 这是重要的事情。 – 2011-03-08 18:31:38