我的目标是使用NHibernate架构生成和Fluent NHibernate的automapper来生成我的数据库。我遇到了我称之为“单向多对多关系”的问题。流利的NHibernate自动映射:一对多的实体,多对多的后端?
我的许多实体都有本地化资源。一个单独的类可能是这样的:
public class Something {
public virtual int Id {get; private set;}
public virtual Resource Title {get;set;}
public virtual Resource Description {get;set;}
public virtual IList<Resource> Bullets {get;set;}
}
的Resource
类没有任何引用回;这些都是完全单向的。
public class Resource {
public virtual int Id {get; private set;}
public virtual IList<LocalizedResource> LocalizedResources {get;set;}
// etc.
}
public class LocalizedResource { //
public virtual int Id {get; private set; }
public virtual string CultureCode {get;set;}
public virtual string Value {get;set;}
public virtual Resource Resource {get;set;}
}
没有IList<Resource>
,一切都发生,我会想 - 资源ID是在Title
和Description
领域。但是,当我添加IList
时,NHibernate将字段something_id
添加到Resource
表中。我明白为什么会这样做,但在这种情况下,这不是一种可持续的方法。
我想要的是为子弹创建联结表。喜欢的东西:
CREATE TABLE SomethingBullet (
Id int NOT NULL PRIMARY KEY IDENTITY(1,1),
Something_Id int NOT NULL,
Resource_Id int NOT NULL
)
这样,当我添加了其他26多实体为我不会跟一个可笑的宽而疏Resource
表来结束该数据库。
如何指示Automapper以这种方式对待所有IList<Resource>
属性?
+1 - 检查链接的博客以了解如何做映射既FNH和代码的新NH映射了很好的指导。 – 2012-02-13 17:24:24