2012-02-07 10 views
2

私はedmlの空のデザイナにテーブルをドラッグすることでデータ駆動型モデルを構築しました。私は自分のモデルの周りにdatacontextを作ることができ、クラスであるかのように各テーブルにアクセスできますが、これらのモデルのそれぞれのコードはどこにありますか?EDMLで生成されたモデルのコードはどこにありますか?

クラス自体の各プロパティのセッターに検証を追加したいので、私は質問します。

答えて

3

プロジェクトのルートレベルで.dbmlファイルを探します。そのファイルの下に<someDB>.designer.csというファイルが表示されます。

ただし、デザイナーファイルの上部に表示されますが、このファイルのクラスを実際に変更する必要はありません。

//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 

あなたが追加を行いたい場合は、生成されたクラスの機能を拡張Partialクラスの作成を検討すべきです。ここで

は、私は私の検証を処理するために作成されたサンプル部分クラスである:

namespace ETL_Framework_UI 
{ 
[MetadataType(typeof(DataObjectMD))] 
public partial class DATA_OBJECT:IValidatableObject 
{ 

    public class DataObjectMD 
    { 
     [Required(ErrorMessage="The object name is required")] 
     [StringLength(50, ErrorMessage = "Name cannot exceed 50 characters")] 
     public string OBJECT_NAME { get; set; } 

    } 
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     ETLDbDataContext db = new ETLDbDataContext(); 
     var field = new[] { "OBJECT_NAME" }; 
     var param = db.DATA_OBJECTs.SingleOrDefault(r => r.OBJECT_NAME == OBJECT_NAME && r.OBJECT_ID != OBJECT_ID); 
     if (param != null) 
     { 
      yield return new ValidationResult("Object name is already in use. ", field); 
} 

NOTEあなたの部分クラスは、あなたのdesigner.csファイルの先頭に参照同じ名前空間で定義する必要があります。

+0

これは、これまで部分クラスを初めて使用したことになります。私は今まで見たことがないコードがいくつかあります。 –

+1

そこにはかなりクールなものがあります。右側のPluralSightのビデオをチェックしてください:http://www.asp.net/mvcそれは、検証と他のMVCの概念に関するいくつかの素晴らしいチュートリアルを持っています – Rondel

+0

リンクをありがとう。私が初めて「利回り」が使われているのを初めて見たのです。どういう意味ですか!? –

3

自動生成されたクラス自体を編集したくない場合は、再度生成する必要がある場合には大きな問題が発生します。代わりに、DataAnnotationsで部分クラスを使用したいとします。このように、あなたの検証/余分なルールは永遠に分離され、維持しやすくなります。あなたが検証を追加しようとしている場合は

Entity framework + validation annotation

+1

ありがとうございます。私はそのようなものが存在することを知りませんでした。そして今、私は、Rondel(上の)コードのいくつかが彼の例で何を話していたかを知っています。 –

1

は多分Entity Frameworkのコードファーストは、よりよい解決策です。

+0

理由を説明できますか?私はいつも私はSQLにエンティティ以上linqを選択する必要がありますかと思った。私はltosがSQLサーバー環境の方が優れていることを知っています。 –

+1

私はなぜか知っていることにも興味があります。私は、EFとしてL2Sとよく似ていない、頻繁に使用される検証システムについて認識していません。 –

+1

部分クラスは不要です。あなたはすべて一箇所にいます。 EFコードの利点の詳細については、http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx –

関連する問題