私のモデルでは、エンティティキーの型としてbigint(ulong)を使用しています。 空のキーには値0を使用する必要があります。 私のメソッドでは値0をチェックしたいだけなので、外部キーのカラムはnullにできません。 他のエンティティによって参照される関連エンティティの削除を除いて、すべて正常に動作します。ここでCodeFluentは、関連するエンティティを削除するときに、nullint型の外部キーをNULLで更新しようとします。
は私のモデルである:ここでは
<cf:entity name="Customer" cfom:bindingList="false">
<!--persistenceIdentity is true, because the corresponding column for this property must be auto incremented by the database.-->
<cf:property name="Id" typeName="ulong" key="true" persistenceIdentity="true" cfps:hint="CLUSTERED" />
<cf:property name="Name" typeName="string" />
</cf:entity>
<cf:entity name="Order" cfom:bindingList="false">
<!--persistenceIdentity is true, because the corresponding column for this property must be auto incremented by the database.-->
<cf:property name="Id" typeName="ulong" key="true" persistenceIdentity="true" cfps:hint="CLUSTERED" />
<!--persistenceNullable is false, because the column for the foreign key must not be nullable.-->
<cf:property name="Customer" typeName="{0}.Customer" persistenceNullable="false" />
</cf:entity>
は私のコードです:
Customer customer = new Customer();
customer.Save();
Order order = new Order();
order.Customer = customer;
order.Save();
customer.Delete();
最後の文は次のエラーを与える: カラムにNULL値を挿入することはできません 'Order_Customer_Id'、テーブル ' CodeFluentTest.dbo.Order ';列はNULLを許可しません。 UPDATEに失敗します。
Customer_Deleteストアドプロシージャは、次の更新ステートメントが含まれているためである:。 UPDATE [オーダー] SET [順序] [Order_Customer_Id] = NULL([オーダー] [Order_Customer_Id] = @Customer_Id。)
もちろん、Order_Customer_Id列がNULL可能ではないため、これは機能しません。 CodeFluentに、NULLではなく値0をOrder_Customer_Id列に入れるように指示するにはどうすればよいですか?