代码中的Nhibernate映射(如何开始)

代码中的Nhibernate映射(如何开始),nhibernate,mapping-by-code,Nhibernate,Mapping By Code,我正在尝试开始NH3.2中的代码映射,我有点迷糊了 我需要回到基本文档的指针,这样我才能理解我能找到的示例的含义, 例如 public class CustomerMap : ClassMapping<Customer> { public CustomerMap() { Lazy(false); Id(x => x.ID, map => map.Generator(Generators.HighL

我正在尝试开始NH3.2中的代码映射,我有点迷糊了

我需要回到基本文档的指针,这样我才能理解我能找到的示例的含义, 例如

public class CustomerMap : ClassMapping<Customer>  
{  
     public CustomerMap()  
     {  
         Lazy(false);  
         Id(x => x.ID, map => map.Generator(Generators.HighLow,  
                       gmap => gmap.Params(new {max_low = 100})));  
         Property(x => x.FirstName, map => map.NotNullable(true));  
         Property(x => x.LastName, map => map.NotNullable(true));  
         Property(x => x.Email, map =>  
                                    {  
                                        map.Unique(true);  
                                        map.Length(50);  
                                        map.NotNullable(true);  
                                    });  
     } 
公共类CustomerMap:ClassMapping
{  
公共客户映射()
{  
懒惰(假);
Id(x=>x.Id,map=>map.Generator(Generators.HighLow,
gmap=>gmap.Params(新的{max_low=100}));
属性(x=>x.FirstName,map=>map.NotNullable(true));
属性(x=>x.LastName,map=>map.NotNullable(true));
属性(x=>x.Email,map=>
{  
地图。唯一(真实);
地图长度(50);
map.NotNullable(true);
});  
} 
现在,可以告诉我这里到底发生了什么的文档在哪里。ClassMapping中有一个Id方法,但我不知道它可以接受什么可能的参数,也不知道map.Generator类在做什么。此外,x=>x.Id在做什么?据我所知,应该说对x的引用指向x.Id,但x是u关于属性函数的所有plcae!?!文档(检查整个类映射类)都会有很大帮助


我迷路了。

首先值得一提的是,这是一个项目,它允许您使用上面使用的示例在代码中存储nhibernate配置。网站上有很多文档

也就是说,我会给你一些快速的建议,让你开始:

类映射中有一个Id方法,但我不知道它可以接受什么样的参数,也不知道map类在做什么。

Id方法采用一个
表达式
,这使下面的代码可以得到一个表示Id字段的表达式树。在简单的情况下,它将采用表达式树并生成这样的标识映射(如果您使用xml配置执行此操作。这也是一个猜测,可能是错误的):

更进一步,x=>x.ID在做什么?据我所知,x的引用应该是x.ID,但是x到处都在使用!?!

我建议您阅读表达式树,以便更好地了解它们的功能,这样您就可以了解如何使用lambda表达式来获取有关对象图的信息。
x
只是lambda期望的对象的占位符,它是通过传递给
ClassMap
的泛型参数键入的
x
是一个
T
,在您的例子中是一个
客户
,可以通过表达式树解析器进行检查

我希望这有帮助

 "what is the x=> x.ID doing?"
该行表示,“此类的Id字段映射到名为此类Id的属性”。它是一个lambda表达式,x是该lambda表达式的局部变量

"From what I understand it should say that the reference to x goes to x.id, but x is used all over the plcae!?!"
我不确定你所说的“引用”是什么意思……它不是NHibernate特有的语法。它巧妙地利用了NHibernate选择解释为映射的泛型和linq表达式


至于文档,fluent与XML非常相似。XML文档在这里。

问题是关于nh3.2代码映射,而不是fluentnhibernate。我没有意识到他们在nh3.2中引入了fluent映射类型的东西,因此产生了混乱。不管怎样,我希望我的帖子不是完全没有帮助!
 "what is the x=> x.ID doing?"
"From what I understand it should say that the reference to x goes to x.id, but x is used all over the plcae!?!"