2016-05-02 4 views
1

私のモデルのすべての列を返すコントローラがあります。しかし、私はモデルを変更するので、私のDateフィールドのDateTime型の私は、次のエラーが表示されます。DateTime? EFモデルでは、.ToListを呼び出して文字列に変換するとnullableではないようです。

は「『バトル』オン 『開始日』プロパティを 『可能System.String』の値に設定することができませんでした。あなたはタイプ 『のSystem.DateTime』がnull以外の値にこのプロパティを設定する必要があります。

私がしたすべては、私は戻って、それがうまく機能した文字列に変更した場合。代わりに、それの前の文字列の?日時を持つように開始日のプロパティを変更し、それを破った。

相続人は私のモデル

public class Battle 
    { 

    [Key] 
    public int BattleID{ get; set; } 
    public string General { get; set; } 
    public DateTime? StartDate { get; set; } 
} 
私がNULL可能のDateTimeに文字列から開始日を変更する前に0

HERESに私のコントローラメソッド

public IHttpActionResult GetAllBattles() 
    { 
     using (BattleContext db = new BattleContext()) 
     { 
      var query = (from results in db.Battle 
         select results); 

      List<Battle> output = new List<Battle>(); 
      output = query.ToList(); 
      return Ok(output); 
     } 

    } 

マインドは、あなたこれがうまく働きました。 (私はそれがDateTimeになりたいので、他の方法では50年または100年以内に簡単に戦いを見つけることができます)。

+1

データベースのDateTime2の値ですか?そうでなければ、それをモデルに割り当てる前に、それをDateTimeに変換する必要があるかもしれません。 –

+0

DBスキーマに 'NOT NULL'と表示されている場合は、C#でnullを使用することで違いはありません。 – Eris

+0

@ChadMcGrathそれは問題を感謝しなかったことを実現しました。 – ngnewb

答えて

0

私が作っていたエラーは、ここではとてもばかげていました。私は間違いなく、その列を日時ではなくSQLデータベースの文字列として宣言しました。それを修正して問題を解決しました。

0

ので(私の日付のnull値を許可する)私のコードでは、私が持っている唯一の違いは、私のモデルでは、この予選文です:

[DataType(DataType.Date)] 
public DateTime? DateModified { get; set; } 

ので、多分試みることを与えますか?それが下のコメントを動作しない場合、私は私のプロジェクトの他の部分を確認することができます。

+0

私のデータベースがコードの最初の方法で生成されたものではないため、データ注釈はそれを変更しませんでした。これを変更しても問題は解決しませんでしたが、問題はSQL Dbの型が文字列であることでした。 – ngnewb