0

1人の顧客が多くのプロファイルを持つことができるクラスがCustomerあります。Profile

私は次の NHibernate オーバーライド クラスを使用しています。

 public void Override(AutoMapping<Customer> mapping)
    {
        mapping.Table("[Customer]");
        mapping.Id(x => x.Id, "Id").GeneratedBy.Identity();

        mapping.HasMany(x => x.Profiles).Cascade.All().Inverse();

        mapping.Map(x => x.FirstName, "FirstName");
        mapping.Map(x => x.LastName, "LastName");
        mapping.Map(x => x.Email, "Email");            
    }

public void Override(AutoMapping<Profile> mapping)
    {
        mapping.Table("[Profile]");
        mapping.Id(x => x.Id, "Id").GeneratedBy.Identity();

        mapping.References(x => x.Customer, "Customer_Id").Cascade.None();

        mapping.Map(x => x.FacebookProfileLink, "FacebookProfileLink");
        mapping.Map(x => x.ContactPhone, "ContactPhone");          
    }

Profileオブジェクトの挿入中に次のエラーが発生します。

値 NULL を列 'Customer_Id'、テーブル 'dbo.Profile' に挿入できません。列はヌルを許可しません。INSERT が失敗しました。\r\nステートメントは終了しました。

私の意図は、オブジェクトへの参照が必要になるCustomer前にオブジェクトを挿入する ことです。そのため、逆属性を使用しています。残念ながら、うまくいきません。これについて何か助けはありますか?ありがとうございました。ProfileCustomer

4

2 に答える 2

0

自分に合った解決策を見つけました。

プロファイルを参照せずに Customer エンティティを保存しています。その後、プロファイルエンティティを保存しています。

顧客の挿入の成功を確認してから、次に何をすべきかを決定できるため(プロファイルも保存するか、検証エラーを実行する)、以前に達成したかったソリューションよりもうまく機能します。

回答ありがとうございます。

于 2013-07-24T11:05:06.483 に答える