0

次のコードがあり、変更を保存できません。私のメソッドのパラメーターは、データベースで変更したい製品の RefCode を含む文字列です。クエリは、変更されるはずの BaseProduct を取得しています。(コードを単純化して英語で設定しようとしたため、おそらくいくつかの構文エラーが発生しましたが、デバッグ モードのコードでは、DB からすべての情報を取得します)。Linqクエリの「select new」に何か問題がありますか?

public static void UpdateProduct(ViewProduct productToUpdate)
    {
        using (var context = new my_Entities())
        {
            var BaseProduct = (from prod in context.Product
                               where prod.Ref == productToUpdate.BaseProduct.RefPrd
                                      select new ViewBaseProduct
                                      {
                                          RefPrd = prod.Ref,
                                          DescrPrd = prod.DescrPrd,
                                          NormeCe = (bool)prod.NormeCE
                                      }).FirstOrDefault();

            if (BaseProduct != null)
            {
                //BaseProduct.NormeCe = false;
                BaseProduct = productToUpdate.BaseProduct;
                context.SaveChanges();
            }
        }
    }
4

3 に答える 3

2

しかし、BaseProduct は ViewBaseProduct オブジェクトですが、ViewBaseProduct はエンティティ クラスですか? ViewModel クラスのようです。

製品エンティティを取得し、フィールドを変更して変更を保存する必要があります。ViewModel クラスにのみ変更を適用しているようです。

これを試して:

public static void UpdateProduct(ViewProduct productToUpdate)
{
    using (var context = new my_Entities())
    {
        var BaseProduct = (from prod in context.Product
                           where prod.Ref == productToUpdate.BaseProduct.RefPrd)
                          .FirstOrDefault();

        if (BaseProduct != null)
        {
            //BaseProduct.NormeCe = false;
            BaseProduct.field1 = productToUpdate.BaseProduct.field1;
            BaseProduct.field2 = productToUpdate.BaseProduct.field2;

            //update the necesary fields
            //......
            context.SaveChanges();
        }
    }
}
于 2013-04-05T07:27:20.203 に答える
0

これを試してみる必要があると思います

public static void UpdateProduct(ViewProduct productToUpdate)
    {
        using (var contexte = new my_Entities())
        {
            var BaseProduct = (from prod in contexte.Product
                               where prod.Ref == productToUpdate.BaseProduct.RefPrd
                                      select new ViewBaseProduct
                                      {
                                          RefPrd = prod.Ref,
                                          DescrPrd = prod.DescrPrd,
                                          NormeCe = (bool)prod.NormeCE
                                      }).FirstOrDefault();

            if (BaseProduct != null)
            {
                BaseProduct.BaseProduct.RefPrd=productToUpdate.BaseProduct.RefPrd
                BaseProduct.BaseProduct.DescrPrd=productToUpdate.BaseProduct.DescrPrd
                BaseProduct.BaseProduct.NormeCE==(bool)productToUpdate.BaseProduct.NormeCE
                contexte.SaveChanges();
            }
        }
}
于 2013-04-05T04:42:34.200 に答える