2009-07-21 9 views
0

なぜ私は 『私はとき「のSystem.Int16" 型に変換することができないタイプ『System.UInt16』のオブジェクト』このエラーを抱えていますそれは(コードの下)私のList.aspxファイル内の私のモデルを反復処理しようだときmは、コードオブジェクトが型に変換することができません「のSystem.Int16」

public ActionResult List() 
{ 
    var x = account.All(); 
    return View(x); 
} 

エラーが現れたの下に実行しようとしています。

<% foreach (var item in Model) { %> 

私はSubsonic 3.0.3とMySQLデータベースを使用しています。以下は私のアカウントテーブルの説明です

acc_id   smallint(5)  unsigned pri 
acc_type  smallint(5)  unsigned 
acc_status  tinyint(3)   unsigned 
acc_balance  int(11)   unsigned 

この問題を解決するには、私は何かを変更する必要がありますか?

+0

ああ、もう1つ、私はMySQL T4アクティブレコードテンプレートを使用しています。 – Funky81

+0

上記の2つのコードのいずれかのビューで、正確にエラーが発生していますか?上記の場合、どの行ですか? – Odd

+0

申し訳ありませんが適切な情報を与えます。エラーは、その試みは、一覧のActionResultから来Modelオブジェクトを反復する際 – Funky81

答えて

1

account.All()またはView(x)知らず、それを知って、かなり難しいです。 xの明示的な入力を使用した場合にも役立ちます。

ushortの代わりにshortにアンボッティングがありますが、実際にはそのコードからはわかりません。私はこれがコンパイル時のエラーではなく例外だと考えていますか?より多くの情報をお願いします!

+0

すべての()の内容を表示してくださいを開始しますフィルタ。 – Funky81

0

提供したコードに基づいて回答を提供することは非常に困難です。どのラインがエラーを出しているのか、どこに問題があるのか​​を言っているわけではありません。しかし、C#のConvertクラスをチェックしてください。問題がC#であり、DBやサブソニックではない場合は、Convertがそのトリックを行うと思います。

ushort num1 = some_number;

short num2;

NUM2 = Convert.ToUInt16(NUM1)。

しかし、あなたが、これは他の後に何かを壊した可能性が知っておく必要があり、このconvertionの意味を理解することは非常に困難です。

+0

私はこれについて知りません。なぜなら、Subsonic.Core dll実装の中にあると私に言ったことです。 – Funky81

0

私はSubSonic 3とMySQLでまったく同じ問題を抱えています。私が見つけることができる唯一の方法は、MySQLテーブル定義を符号付きのカラムと符号なしのものを使用するように変更することでした。あなたが余分な範囲を必要とする場合(私はこれが32ビットプロセッサのパフォーマンスに影響があると考えていますが)

あなたは常にbigint型を使用することができます。

0

MySQLのSubsonic3テンプレートからフォークを作成しました。私のフォーク内で、私は自分自身の質問を解決するMySQLの署名のないデータ型をサポートできるように変更しました.Dはチェックアウトしてください。http://github/funky81

0

ActiveRecord.csの符号なしカラムのプロパティをintまたは?intからuint ?uintは部分的に問題を解決します。

関連する問題