私はこれを持っています:
<asp:DropDownList ID="HomeCountry" runat="server"
DataSourceID="CountryListEntityDS"
DataTextField="CountryNameEn"
DataValueField="CountryCode"
AppendDataBoundItems="True"
SelectedValue="<%# Bind('HomeCountry') %>">
<asp:ListItem Text="--Select One--" Value="" />
</asp:DropDownList>
データソースは次のようになります。
<asp:EntityDataSource ID="CountryListEntityDS" runat="server"
ConnectionString="name=MainDataModelEntityCont"
DefaultContainerName="MainDataModelEntityCont"
EnableFlattening="False"
EntitySetName="Countries">
</asp:EntityDataSource>
国と --- Select One --- が最初の項目として正しくドロップダウンされます。国を持つレコードを --- 選択 --- (国を持たない) に変更し、[保存] を押した場合を除いて、すべてが正しく機能します。
次にスローします:
[SqlException (0x80131904): UPDATE ステートメントが FOREIGN KEY 制約 "FK_Account_CountryList" と競合しました。
SQL Server Management Studio でこのエラーを手動で再現しました。レコードの国フィールドを有効な値から "" に変更しようとすると発生します。同じエラーがスローされます。しかし、Nullを入れるとうまくいきます。DB 制約は基本的に、有効な値または Null のいずれかが必要であると言っています。
だから私には、C#コードは何らかの形でNullがDBに送信されず、空白の文字列になっているようです。
誰でも大歓迎です。よろしくお願いします。