主キーを持つテーブルがあるときはいつでも、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
ことは私が必要とするものではありませんが、そうしなければならないと思います。