Предположим, у меня есть это (упрощенно)
Класс Cliente
Идентификатор (v => v.numero_cliente, "цифра_cliente")
HasMany (v => v.Acionamentos) .Cascade.All() .LazyLoad ()
Класс Movimentacao
Ссылки (v => v.Cliente, "id_Fornecedor")
Класс Acionamento
Ссылки (v => v.Cliente,"figurero_cliente")
Свободное владение nHibernate сгенерирует неправильный SQL, например:
Если я попытаюсь получить Acionamentos, то он выдаст неправильный SQL:
SELECT * FROMAcionamentos WHERE id_Fornecedor = p0
Но в моем отображении Acionamento я установил ссылку на столбец с именем цифра_клиенты , а не на id_Fornecedor
Если я использую всегда одно и то же имя столбца "Numberro_Cliente" во всех ссылках, никаких проблем не возникает.Но я боюсь, что не смогу гарантировать, что все имена столбцов для класса Client будут одинаковыми во всех таблицах.
Кто-нибудь знает, что делать?Может ли команда Fluent NHibernate увидеть это и опубликовать комментарий здесь?
Если вы хотите, чтобы точный SQL был здесь:
не удалось инициализировать коллекцию: [Sistema.Clientes.Cliente.Acionamentos # 019012938/ 07] [SQL: SELECT acionament0_.id_Fornecedor, как id7_1_, acionament0_.id_Acionamento, как id1_1_, acionament0_.id_Acionamento, как id1_6_0_, acionament0_.DataHora как DataHora6_0_, acionament0_.Tipo как Tipo6_0_, acionament0_.Descricao как Descricao6_0_, acionament0_.numero_cliente как numero5_6_0_, acionament0_.id_Usuario as id6_6_0_ FROM clientes.acionamento acionament0_ WHERE acionament0_.id_Fornecedor =?
При попытке получить Cliente.Acionamentos
H ниже указывается ошибка.:
Система.Клиенты.Cliente.hbm.xml:
<id name="numero_cliente" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="numero_cliente" />
<generator class="assigned" />
</id>
<bag cascade="all" lazy="true" name="Acionamentos" mutable="true">
<key>
<column name="id_Fornecedor" /><!-- oopps, this should be numero_cliente -->
</key>
<one-to-many class="Sistema.CRM.Acionamento, Sistema, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bag>
Система.CRM.Acionamento.hbm.xml:
<many-to-one class="Sistema.Clientes.Cliente, Sistema, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Cliente">
<column name="numero_cliente" />
</many-to-one>
Estoque.Movimentacao.hbm.xml:
<many-to-one class="Sistema.Clientes.Cliente, Sistema, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Cliente" not-found="ignore">
<column name="id_Fornecedor" />
</many-to-one>