ADO.NETエンティティデータモデルを作成しました。実際のクラスはどこで確認できますか?私は、データ型を確認し、いくつかの属性を追加したいと思うDisplayName
。ADO.NETエンティティデータモデルのコードを表示する方法
ありがとう:ここ
は、ソリューションエクスプローラからモデルです。ADO.NETエンティティデータモデルを作成しました。実際のクラスはどこで確認できますか?私は、データ型を確認し、いくつかの属性を追加したいと思うDisplayName
。ADO.NETエンティティデータモデルのコードを表示する方法
ありがとう:ここ
は、ソリューションエクスプローラからモデルです。データベースからモデルを生成すると(この場合のように見えます)、いくつかの異なるコードファイルが作成されます。コンテキストのコードを取得するには、ProgramMasterList.Context.tt
を展開します。コンテキストクラスのためにそこに.csファイルがあります。
次に、データベースからモデルの一部として選択した各テーブルに対して、エンティティクラスが作成されます。 ProgramMasterList.tt
を展開してそれらを見つけることができます。たとえば、Personというテーブルがある場合、Person
クラスが定義されたPerson.cs
のエンティティクラスファイルがあるとします。
ここで、クラスを修正してプロパティを追加したいと述べたとします。 Entity Frameworkによって動的に生成されるProgramMasterList.tt
のクラスファイルを変更すると、次回データベースからモデルを更新したとき(DBからモデルに新しいテーブルを追加する場合など)には、作られたものは上書きされます。幸いにも、より良い方法があります。 ProgramMasterList.tt
の各クラスは部分クラスです。したがって、Entity Frameworkが自動的に生成したファイルを変更せずに、そのクラスに追加することができます。新しいファイルを作成し、Personクラスを(部分的に)宣言し、余分なメソッドやプロパティなどをそこに追加するだけです。そのような「拡張機能」をすべてフォルダに入れて整理しておくことをお勧めしますが、それはあなた次第です。
だから、それは次のようになります。
溶液構造:
//------------------------------------------------------------------------------
// <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() + ")"; }
}
}
}
ありがとうございました。 '[Key]'や '[Required(ErrMessage =" ")]'などの属性をこれらのプロパティにどのように追加しますか? –
これらの属性の種類は、コードの最初のモデルでよく見られます。まずデータベースでは、属性ではなくモデルエディタを使用してキーを設定します。通常、EFはデータベース構造に基づいてどの列がプライマリキーであるかを自動的に判断する適切な仕事をしますが、間違っている場合は、エンティティ内のプロパティを右クリックして、かぎ。 「必須」属性に関しては、列をnullにできないようにすることができますが、エラーメッセージを設定することはできません。私はIValidatableObjectインターフェイスで検証をお勧めします。 – TheRotag
http://www.entityframeworktutorial.net/create-poco-entity.aspx –