こんにちは、私は私のASP.NET MVCのウェブサイトのためのEntityFrameworkを使用していますEntity-Frameworkの例外を更新しますか?
はアップデートといくつかの問題を抱えています。
これは私の更新コードが好きlooka方法です:
using (BissEntities context = new BissEntities())
{
if (adCategoryFilter.Id < 1)
context.AddToAdCategoryFilter(adCategoryFilter);
else
context.Refresh(System.Data.Objects.RefreshMode.ClientWins, adCategoryFilter);
if (context.SaveChanges() > 0)
return true;
}
return false;
context.Refreshを実行すると、私は次の例外を取得:
要素のインデックス0でオブジェクトのコレクションにリフレッシュしましたnullのEntityKeyプロパティ値、またはこのObjectStateManagerには関連付けられていません。
Stacktrace : at System.Data.Objects.ObjectContext.RefreshCheck(Dictionary`2 entities, Object entity, EntityKey key)
at System.Data.Objects.ObjectContext.AddRefreshKey(Object entityLike, Dictionary`2 entities, Dictionary`2 currentKeys)
at System.Data.Objects.ObjectContext.RefreshEntities(RefreshMode refreshMode, IEnumerable collection)
at System.Data.Objects.ObjectContext.Refresh(RefreshMode refreshMode, Object entity)
at Biss.Models.FilterModel.UpdateCategoryFilter(AdCategoryFilter adCategoryFilter) in C:\Users\Snowman\Documents\Visual Studio 2010\Projects\Biss\Biss\Models\FilterModel.cs:line 86
これは初めての問題です。まず、データベース内の関係と関係があると考えましたが、影響を受けたテーブルから削除された後も同じ例外が残っていました。
adCategoryFilterはどこから来たのですか?
adCategoryFilterはinstansiated(new)であり、ViewObjectからのデータで埋められます(Webサイトから)。それはフィルタIDのような必要なデータを持っています(データベースを修正するためにフィルタをマップするため)。
私はこの問題をどのように受けているのか、どうすれば解決できるのか説明します。
BestRegards
ありがとうございます。しかし、MVCとAutoMapperのUpdateModel(http://automapper.codeplex.com/)の違いは何ですか? – Banshee
わかりませんが、私はどちらかの内部を見ていません。彼らは両方ともリフレクションを使用し、かなり似ていると思う、私は実際にメタデータで更新されるプロパティを明示的にマークする独自のカスタムプロパティを使用します。どちらの方法でも基本的にorigObject.Property = viewModel.Propertyを各プロパティに対して何度も書くことなく保存できます。これは可能な限り有効です。 – RichardW1001