2

私のモデルが次のようになっているとしましょう (簡単にするために省略しています):

public class Deal
    {
        [Key]
        public int DealId { get; set; }

        //one Deal may have many pictures
        public virtual List<Picture> Pictures { get; set; } 

        public Deal()
        {
            Pictures = new List<Picture>();
        }       
    }

写真リストから特定の写真を削除したいときはいつでも、次のようにします。

Deal deal = dealRepository.GetAll().Where(d => d.DealId == id).FirstOrDefault();
deal.Pictures.RemoveAll(p => p.Criterion.Equals(SomeCriterion));
unitOfWork.Commit();

すべてが正常に機能しているように見えますが、dbms を見ると、削除されるはずのレコードがまだ存在していることがわかりますが、外部キーが null に設定されています。

実際にレコードを削除する方法はありますか?

4

1 に答える 1

2

レコードを削除するには、次の手順を実行する必要があります。

foreach (var picture in deal.Pictures.Where(theCondition).ToList())
    dbContext.Set<Picture>().Remove(picture);

そのようなプロパティがある場合dbContext.Picturesの代わりに使用できます.Set<Picture>()

もちろん、DbContext (リポジトリ) の上に追加の抽象化を構築したため、その呼び出しをどこかに公開する必要があります。

于 2012-06-22T17:57:41.100 に答える