5

主キーを持つテーブルがあるときはいつでも、BIGINT新しいレコードを挿入できますが、既存のレコードを更新することはできません。更新しようとすると、次のエラーが表示されます。

"The specified value is not an instance of type 'Edm.Decimal'"

サンプルモデル:

public class Model
{
    public long ModelID { get; set; }

    public DateTime ProcessedOn { get; set; }
}

更新コードの例:

public bool SetModelProcessed(long id)
{
    var entity = db.models.SingleOrDefault(m => m.ModelID == id);

    entity.ProcessedOn = DateTime.Now;

    db.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);

    db.SaveChanges();
 }

このような単純なモデルでさえ、私には失敗しています。何が起こっているか知っている人はいますか?

編集

コードファーストのアプローチを試しました。Entity Framework 4.3 は、mySQL データベースを生成することさえできませんでした。これは、移行機能が追加された後、明らかに mySQL および Entity Framework のバージョンの問題です。

バージョン 4.1.10715.0 へのダウングレード以降、long機能しますが、ulongまだ機能しません。EF は、プロパティがulong.

EntityType 'Model' has no key defined. Define the key for this EntityType.

long代わりに使用するulongことは私が必要とするものではありませんが、そうしなければならないと思います。

4

1 に答える 1

0

これがたまたまデータベース内の unsigned bigint である場合、 a ではなく 10 進数にマップされると思います。longなぜ a だけを使用しないのかわかりませんulong。しかし、私はそこから始めたいと思います。bigint が署名されていることを確認してください。

于 2012-06-01T20:25:24.453 に答える