gpt4 book ai didi

c# - NHibernate 3.2 映射中的一对一映射代码

转载 作者:行者123 更新时间:2023-11-30 15:05:01 25 4
gpt4 key购买 nike

我正在尝试通过代码 api 学习 NHibernate 3.2 内置映射(不是 Fluent NHibernate)。你能帮我映射这些实体之间的一对一(或零)关系吗?

注意: 我用谷歌搜索了这个问题,我也搜索了 SOF,所有示例都使用 Fluent API 或 XML;我正在尝试在 NHibernate 3.2 中使用内置映射 API

public class Person { 
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }

// can be null
public virtual Address Address { get; set; }
}

public class Address {
public virtual int Id { get; set; }
public virtual string Line1 { get; set; }
public virtual string Line2 { get; set; }
public virtual string City { get; set; }

// can not be null
public virtual Person Person { get; set; }
}

主键策略在这里:

Id( 
t => t.Id,
t => {
t.Generator(Generators.HighLow, g => g.Params(new { max_low = 100 }));
t.Column(typeof(TEntity).Name + "Id");
});

最佳答案

取决于您实际想要什么——一对一 map 或多对一 map 可能会回答您的问题。如果您需要真正唯一的双向约束,请查看一对一链接:http://notherdev.blogspot.com/2012/01/mapping-by-code-onetoone.html

一对一通常是一个糟糕的策略,因为在几乎所有情况下,将所有列都放在一个表中是有意义的,如果您需要它们在您的域中成为单独的实体,则通过组件映射将它们分开。在域和数据模型中将它们分开的典型方法是使用多对一的方式,并使用唯一的约束返回到父级,这是一种常见的模式。

有关一般 3.2 映射的技巧和提示,此资源对我帮助很大:http://notherdev.blogspot.com/2012/02/nhibernates-mapping-by-code-summary.html

关于c# - NHibernate 3.2 映射中的一对一映射代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com