0

そのため、テーブルに BIT 列を追加したので、関連する Windows Entity Framework クラス モジュールによって適切に処理されるようにする必要があります。

Order_Header.cs に追加したものは次のとおりです。

     //New added column...
    public virtual bool REPORT_UPLOADED
    {
        get;
        set;
    }

しかし、ファイルは何らかのツールによって自動生成されたように見えます...もしそうなら、どれですか? 新しい列を考慮に入れるには、そのツールを再実行する必要がありますか? いずれかの方法。

ここで、エンティティの保存、更新、選択などの機能を実装するクラス モジュールに入りました。

    public override int Save(Entities.Master.Order_Header type)
    {
        try
        {
            using (var context = new Master_Data_Container(ConfigurationManager.MasterDataConnection()))
            {
                context.Order_Header.AddObject(type);

                return context.SaveChanges();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    public override int Update(Entities.Master.Order_Header type)
    {
        try
        {
            using (var context = new Master_Data_Container(ConfigurationManager.MasterDataConnection()))
            {
                var orderHeader = context.Order_Header.First(n => n.ID == type.ID);

                orderHeader.ADR_FACT = type.ADR_FACT;
                orderHeader.ADR_RAPPORT = type.ADR_RAPPORT;                 
                orderHeader.REPORT_UPLOADED = type.REPORT_UPLOADED;
                orderHeader.STATUT = type.STATUT;
                orderHeader.TELEPHONE = type.TELEPHONE;
                orderHeader.TYPE_COMMANDE = type.TYPE_COMMANDE;
                orderHeader.TYPE_EXAMEN = type.TYPE_EXAMEN;

                return context.SaveChanges();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

私は Entity Framework にあまり詳しくないので、このプロジェクトで正常に動作する別のエンティティに対して既に行われたことを模倣してみました。

更新されない REPORT_UPLOADED を除いて、更新は正常に機能しているようです。SQL プロファイラ トレースは、新しいプロパティ/列が無視されていることを示しています :(

                        orderHeader.REPORT_UPLOADED = true;
                        orderHeader.POSTE = "WHATEVER";
                        int result = new MsDt_OrderHeader().Update(orderHeader);

足りないものはありますか?

4

3 に答える 3

2

更新するには、変更を保存する前に、モデルを更新することをコンテキストに伝える必要があります。

context.Entry(Order_Header).State = EntityState.Modified;
return context.SaveChanges();
于 2012-05-26T15:15:58.093 に答える
2

自動生成されたファイルにコードを追加するべきではありません。それを部分クラスにして、すべてのカスタム コードを別のファイルに入れる必要があります。本当の問題は、マークが示唆したように聞こえますが、概念モデルからストレージ モデルへのマッピングを説明するメタデータが更新されていません。

Visual Studio で .edmx ファイルを右クリックし、[データベースからモデルを更新] を選択します。T4 テンプレートを使用してクラスをカスタマイズしている場合は、テンプレートを選択して [カスタム ツールの実行] を選択する必要があります。

于 2012-05-26T17:09:59.823 に答える
0

プロパティを手動で追加したばかりの場合は、データベースに保存する方法を説明するメタデータがない可能性があります。EFドキュメントは手元にありませんが、LinqtoSQLには[Column]属性があります。EFにも似たようなものがあると思います。

于 2012-05-26T15:19:48.093 に答える