2016-04-21 4 views
-1

ADO.NETエンティティデータモデルを作成しました。実際のクラスはどこで確認できますか?私は、データ型を確認し、いくつかの属性を追加したいと思うDisplayNameADO.NETエンティティデータモデルのコードを表示する方法

enter image description here

ありがとう:ここ

は、ソリューションエクスプローラからモデルです。

+0

http://www.entityframeworktutorial.net/create-poco-entity.aspx –

答えて

0

データベースからモデルを生成すると(この場合のように見えます)、いくつかの異なるコードファイルが作成されます。コンテキストのコードを取得するには、ProgramMasterList.Context.ttを展開します。コンテキストクラスのためにそこに.csファイルがあります。

次に、データベースからモデルの一部として選択した各テーブルに対して、エンティティクラスが作成されます。 ProgramMasterList.ttを展開してそれらを見つけることができます。たとえば、Personというテーブルがある場合、Personクラスが定義されたPerson.csのエンティティクラスファイルがあるとします。

ここで、クラスを修正してプロパティを追加したいと述べたとします。 Entity Frameworkによって動的に生成されるProgramMasterList.ttのクラスファイルを変更すると、次回データベースからモデルを更新したとき(DBからモデルに新しいテーブルを追加する場合など)には、作られたものは上書きされます。幸いにも、より良い方法があります。 ProgramMasterList.ttの各クラスは部分クラスです。したがって、Entity Frameworkが自動的に生成したファイルを変更せずに、そのクラスに追加することができます。新しいファイルを作成し、Personクラスを(部分的に)宣言し、余分なメソッドやプロパティなどをそこに追加するだけです。そのような「拡張機能」をすべてフォルダに入れて整理しておくことをお勧めしますが、それはあなた次第です。

だから、それは次のようになります。

溶液構造:

  • をProgramMasterList.edmx
    • ProgramMasterList.Context.tt
      • ProgramMasterList.Context.cs
    • ProgramMasterList.Designer.cs
    • ProgramMasterList.edmx.diagram
    • ProgramMasterList.tt
      • Person.cs
  • 拡張
    • Person.cs
  • //------------------------------------------------------------------------------ 
    // <auto-generated> 
    //  This code was generated from a template. 
    // 
    //  Manual changes to this file may cause unexpected behavior in your application. 
    //  Manual changes to this file will be overwritten if the code is regenerated. 
    // </auto-generated> 
    //------------------------------------------------------------------------------ 
    
    namespace SomeNamespace 
    { 
        using System; 
        using System.Collections.Generic; 
    
        public partial class Person 
        { 
         public Person() 
         { 
         } 
    
         public int PersonID { get; set; } 
         public string Name { get; set; } 
         public DateTime Birthdate { get; set; } 
        } 
    } 
    

    人(ProgramMasterList.tt下)

Person.cs。cs(Extensionsフォルダ内) 注:Namespaceが他のPerson.csファイルの名前空間と正確に一致することを確認してください。

namespace SomeNamespace 
{ 
    public partial class Person 
    { 
     // Custom property (not auto-generated by Entity Framework) 
     public string DisplayName 
     { 
      get { return PersonID + " - " + Name + " (" + Birthdate.ToString() + ")"; } 
     } 
    } 
} 
+0

ありがとうございました。 '[Key]'や '[Required(ErrMessage =" ")]'などの属性をこれらのプロパティにどのように追加しますか? –

+0

これらの属性の種類は、コードの最初のモデルでよく見られます。まずデータベースでは、属性ではなくモデルエディタを使用してキーを設定します。通常、EFはデータベース構造に基づいてどの列がプライマリキーであるかを自動的に判断する適切な仕事をしますが、間違っている場合は、エンティティ内のプロパティを右クリックして、かぎ。 「必須」属性に関しては、列をnullにできないようにすることができますが、エラーメッセージを設定することはできません。私はIValidatableObjectインターフェイスで検証をお勧めします。 – TheRotag

関連する問題