代码中的Nhibernate映射(如何开始)
我正在尝试开始NH3.2中的代码映射,我有点迷糊了 我需要回到基本文档的指针,这样我才能理解我能找到的示例的含义, 例如代码中的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
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!?!"