私は市民を表示するためにDBから行を取得しています。私はmrtlStt
ことに気づいデバッグ中ヌルとしてDBからncharを取得
ctzn = new Citizen
{
//additional properties
mrtlStt = dr["ctznMrtlStt"] as char?,
//additional properties
};
:
[DisplayName("Marital Status")]
public char? mrtlStt { get; set; }
public IEnumerable<SelectListItem> mrtlSttOptns
{
get {
return new[] { new SelectListItem {Value="m", Text="Married" },
new SelectListItem {Value="d", Text="Divorced" },
new SelectListItem {Value="s", Text="Single" },
new SelectListItem {Value="w", Text="Widow" },
new SelectListItem {Value="u", Text="Unknown" }};
}
}
コンストラクタで、私は次のようでした:私はnchar(1)
としてDBに定義され、モデルでchar?
として配偶者の有無の列を持っていますnull
として常に返されます。そのため、ドロップダウンリストには常に「婚姻状況を選択してください」と表示され、実際の婚姻ステータスは表示されません。新しいCitizen
を作成すると、婚姻状態の列が適切に更新されます。
ストアドプロシージャ内でキャスト(char?)、CAST、.ToString()
を使用しようとしましたが、役に立たなくなりました。読者の機能はあまり役に立たなかった。
データタイプをnvarchar(1)
に変更して完了することができますが、どうしてもmrtlStt
がnull
として取得された理由を知ることができず、またできません。
私はここで何が欠けていますか?
更新:これはストアドプロシージャです。
SELECT ctznId, ctznLname, ctznFname, ctznDob, ctznHgt, ctznEml, ctznPhone, ctznNumchilds,
ctznLivestat, ctznMrtlStt, ctznCtcod, ctznNote
FROM tblCitizens
WHERE [email protected]
UPDATE:
ALTER PROCEDURE [dbo].[addCitizen]
...
@fmlstt as nchar(1)=N'u',
...
AS
BEGIN
begin try
INSERT INTO tblCitizens(... ,ctznMrtlStt, ...)
VALUES (..., @mrtlStt, ...)
return @@rowcount
end try
begin catch -- if ID exists
return 0
end catch
END
検索の問題とデータがデータベースに正しく格納されていますか? – Shaharyar
@marc_sええ、それについて申し訳ありません:( –
@Shaharyar私はそれが検索段階にあると確信しています。私はブレークポイントを置き、すべてのプロパティを上回ったときに、それぞれはそれぞれの正しい値を 'mrtlStt' –