在FluentNHibernate中使用Embeddable?

时间:2016-09-18 03:33:14

标签: c# fluent-nhibernate

我正在寻找有关在Hibernate中使用FluentNHibernate的Embeddable的任何方法或文档。有什么办法可以在FluentNHibernate中使用Embeddable,如果不是有最好的模拟方法吗?

1 个答案:

答案 0 :(得分:0)

最后我找到了一些解决方案。它就像JPA / Hibernate的Embeddable一样非常简单。

在此处找到:https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-mapping#components

然后我做了。

public class Cliente {

        public virtual long id                          { set; get; }
        public virtual long codigo                      { set; get; }
        public virtual String nome                      { set; get; }
        public virtual String sexo                      { set; get; }
        public virtual String cpf                       { set; get; }
        public virtual String rg                        { set; get; }
        public virtual DateTime dtNascimento            { set; get; }
        public virtual Endereco endereco                { set; get; } //Embeddable

        public Cliente() { }
    }



public class Endereco {

        public  String endereco;
        public  String numero;
        public  String bairro;
        public  String complemento;
        public  String cidade;
        public  String cep;
        public  EstadosBrasil uf;

        public Endereco() {            
        }
    }

<强>映射

public class ClienteMap : ClassMap<Cliente> {
        public ClienteMap() {
            Table("CLIENTE");
            Id(c => c.id).GeneratedBy.Native();
            Map(c => c.codigo);
            Map(c => c.nome);
            Map(c => c.sexo).Length(2);
            Map(c => c.cpf);
            Map(c => c.rg);
            Map(c => c.dtNascimento).CustomType<DateTime>();
            //embeddable
            Component(c => c.endereco, e => {
                                            e.Map(c => c.endereco);
                                            e.Map(c => c.numero).CustomType<int>();
                                            e.Map(c => c.bairro);
                                            e.Map(c => c.complemento);
                                            e.Map(c => c.cidade);
                                            e.Map(c => c.cep);
                                            e.Map(c => c.uf).CustomType<GenericEnumMapper<EstadosBrasil>>();
                                            });

        }
    }