EFは、モデルをチェックアウトし、独自の創造をMODL、値が更新され、

 ///  <要約>                          
    /// 作成:江Yunfeng
     /// 日:2019年12月23日
     /// 説明:更新エンティティ、データベースエンティティと比較
     ///  </要約> 
    パブリック クラスJyfUpdateModel 
    { 
        ///  <まとめ> 
        /// このプロパティはNEWOBJ値でない場合dataBaseObj NEWOBJは、同じ属性名を有する場合、属性値はdataBaseObj NEWOBJに割り当てられ、このプロパティ
         ///は、主に原稿のうち空に防止するために、更新するために使用されますいくつかのデータが
         ///  </要約> 
        ///  <PARAM NAME = "dataBaseObj"> EFクエリデータベース得られたモデル</ param>の
        ///  <PARAM NAME = "NEWOBJ"> 自動的にフォームがアクションに提出され、フレームワーク内部で作成したモデルのフォームフィールド</ param>の
        公共の 静的な 無効 UPDATEMODEL(オブジェクト dataBaseObj、オブジェクトNEWOBJ)
        { 
            型t = dataBaseObj.GetType();
             // 3.2.3取得すべてのエンティティと公共財産??? 
            一覧<PropertyInfo> propertyInfos = t.GetProperties(BindingFlags.Instance | BindingFlags.Public)。 ToListメソッド();
             // 3.2.4は、エンティティ属性辞書コレクション???作成 
            辞書< 文字列、PropertyInfo> dicPropertys = 新しい新しい辞書< 文字列、PropertyInfo> ()
             // プロパティを変更したい3.2.5エンティティ属性の名前を? ???コレクション辞書キーに追加:属性名??値:属性オブジェクト?? 
            propertyInfos.ForEach(P => 
            {
                dicPropertys.Add(p.Name、P)。
            }); 

            タイプT2 
                            item.SetValue(NEWOBJ、dicPropertys [item.Name]以降.getvalue(dataBaseObj))。 = newObj.GetType()。
            foreachのVARの項目 t2.GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList())
            { 
                場合(dicPropertys.Keys.Contains(item.Name))
                { 
                    試み
                    { 
                        場合(item.GetValue(NEWOBJ)== nullを && dicPropertys [item.Name]以降.getvalue(dataBaseObj)!= NULL 
                        { 
                        } 

                    } 
                    キャッチ(例外例)
                    {
                        スロー
                    } 
                } 
            } 
        } 

    }

 

おすすめ

転載: www.cnblogs.com/jiangyunfeng/p/12607863.html