2017-05-10 3 views
0

ねえ、以下のように私はint型のクラス値にはDBNullを割り当てるしようとしていますすべて:しかし設定ASP.net MVCモデルクラスint型、文字列&DateTime値がDBNULLする

namespace ETTData.Models 
{ 
    public class CHeld 
    { 
     public class AdNo { 
      public int RequestID { get; set; } = DBNull.Value; 

      public string TLead { get; set; } = DBNull.Value; 

      public DateTime RequestDate { get; set; } = DBNull.Value; 
     } 
    } 
} 

、私が手誤差(秒):

エラーCS0029は、暗黙的にタイプを変換できません 'System.DBNull' 'int型ETTData

エラーCS0029は、暗黙的にタイプを変換できませんに 'System.DBNull' '文字列' ETTDataへそれがnull非許容値型

あるので

エラーCS0037は、「日時」にヌル変換できません。また、これは、のDateTime文字列 variblesを行う際に問題になるようですか?

これを機能させるには何が欠けていますか?

+3

なぜ*データベース固有の*型をC#オブジェクトに割り当てようとしていますか? 'null'はなぜオプションではないのですか? – DigiFriend

+0

@DigiFriend私は** NULL **と** DBNull **はお互いに異なっていて、データベースに保存される変数を使用している場合は** DBNull **を使用する必要があります**ヌル**。 http://stackoverflow.com/questions/4958379/what-is-the-difference-between-null-and-system-dbnull-value – StealthRT

+0

はい、ただし、DBに保存するときにのみ*です。 C#オブジェクトに 'DBNull'を割り当てることはできません。 – DigiFriend

答えて

1

こんにちは、なぜあなたのモデルクラスにdb null値を入れようとしていますか?

null値を受け取るプロパティがない場合は、?を使用して型をNULLにすることができます。

public int? RequestID { get; set; } 
public string TLead { get; set; } 
public DateTime? RequestDate { get; set; } 

これが役に立ちます。タイプではありません組み込まれて - - も任意の型を自分で作成することができない - クラス/構造体がDBNullから派生することはできません -

+2

クイック、削除?文字列に! – Matt

+0

'string'は常にnullであるため、' string? 'はありません – Mats391

+0

Yup Eagle Eyes :-D。ありがとう! –

1

あなたは唯一の有効な値として、それを受け入れるタイプでDBNullを使用することができ、それが封入されているので、することができますから継承することはできません。

あなたが( - int? nullにすることはできませんし、モデルの構造体の種類、nullablesなどなどint)DBにおけるNULL可能できるプロパティについてnullを使用する必要があります。

DBに保存するときは、nullであるかどうかを確認し、そうであればDBNullをデータベースに渡します。

関連する問題