2

これが正しい方法かどうかはわかりませんが、そうである場合は、別の方法でアドバイスしてください。

これは、EF 5.x を使用する ASP.Net MVC 4 サイトです。

独自のクラス ライブラリに Entity Framework があるとします。コード生成アイテムがすべてのモデルを生成しました (EF モードの xxx.tt セクション)。

このプロジェクトは、サイトの開発で追加/参照されます。

これで、EF を介してデータにアクセスできます。

ここで、サイト プロジェクトで、DB にない追加のプロパティを使用して、EF モデルの 1 つの部分クラス ("Users" など) を作成したいと考えています。

過去に Web フォーム プロジェクトで EF がプロジェクトの一部であり、参照ではなかった場合、部分クラスを作成するだけですべてがうまくいきました。私の「ユーザー」には、データベースに関連していないが「ユーザー」に必要な他のものがたくさんあります。

EFが別のプロジェクトにあるこのMVCプロジェクトでこれを機能させることができないようです。

たとえば、これを試しました:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MyTestEntity.Entity;

namespace MyTestMVCSite.Models
{
    public partial class Email
    {       
        public string OtherEmail {
            get { return "me@myEmail.com"; }
        }       
    }
}

次のように、EFモデルクラスの継承も試みました。

public partial class Email : MyTestEntity.Entity.Email
{       
    public string OtherEmail {
        get { return "me@myEmail.com"; }
    }       
}

「OtherEmail」にアクセスできるようにするために何もしていないようです

私が実際にできるようにしたいのは、一部のモデルの部分クラスを作成し、この部分クラスにインターフェイスを実装させて、オーバーロードするのではなく、このインターフェイスのインスタンスを別のオブジェクトに挿入できるようにすることです。

私はクレイジーナンセンスを話しているのですか?

4

2 に答える 2

7

2 つの異なるアセンブリ (プロジェクト) で同じクラスを参照する 2 つの部分クラスを持つことはできません。アセンブリがコンパイルされると、メタデータが組み込まれ、クラスは部分的ではなくなります。部分クラスを使用すると、同じクラスの定義を 2 つのファイルに分割できます。

異なるアセンブリの 2 つの部分クラスが同じクラスを表すことは可能ですか?

于 2013-08-30T15:49:30.763 に答える
3

表示目的で使用される追加のプロパティでモデルを拡張する場合は、ビュー モデルの使用と、モデルとの間でデータをビュー モデルにマッピングするメカニズムを検討する必要があります。

その後、現在のビューに基づいて、モデルから独立して検証を実行できます。ビュー モデルは、ビューで明示的に指定していない場合でも、投稿データを通じてユーザーに変更してほしくないモデルのプロパティを誤って公開することからも保護します。

于 2013-08-30T15:50:03.857 に答える