LINQ を使用して特定のエンティティを除外するなどのために、クラス ライブラリで静的ヘルパー クラスを使用しています。ObjectContext と、フィルター処理するパラメーターを渡します。問題は、ObjectContext が破損することです。
例えば:
Users u = EntityHelper.GetUsersOfCertainAge(ObjectContext, 24);
ObjectContext.SaveChanges();
ユーザー リストは適切に入力されますが、ObjectContext.SaveChanges()
変更が行われていない場合でも、プログラムは でクラッシュします。変更が行われた場合でも、変更をまったく保存できません。
「Null 参照例外」や DateTime オーバーフローなどを取得しています。空のオブジェクトが ObjectContext で終了しているように見えるため、保存しようとすると、データベース内のあらゆる種類の制約に違反します。理由はわかりませんが、ヘルパー クラス内で行っていることは、LINQ を使用して ObjectContext 内のリストをフィルター処理し、結果を返すことだけです。
アプローチが明らかに間違っている/悪い場合、または適切な代替手段がある場合、何がこの破損につながる可能性があるか知っていますか? 新しいコンテキストのあとがきを作成することは機能しますが、ハックのように感じます。
例 (別のクラス ライブラリ、静的クラスに格納):
public static User GetFirstUserOfCertainAge(Entities ctx, int inputAge)
{
return ctx.Users
.Where(x => x.Age == inputAge)
.OrderByDescending(x => x.Created)
.FirstOrDefault();
}