Entity Framework
データベースの最初のモデル生成
サーチ…
データベースからモデルを生成する
Visual Studio
Solution Explorer
に移動し、 Project
をクリックしてモデルを追加します 。 右マウス 。 ADO.NET Entity Data Model
選択する
次に、選択したGenerate from database
し、クリックしNext
クリックし、次のウィンドウにNew Connection...
あなたは(だろうからモデルを生成するデータベースへとポイントMSSQL
、 MySQL
か、 Oracle
)
これを行った後、 Test Connection
クリックして接続が正しく設定されているかどうかを確認します(ここで失敗した場合は、これ以上進みません)。
[ Next
をクリックし、必要なオプション(エンティティ名を生成するスタイルや外部キーを追加するスタイルなど)を選択します。
もう一度[ Next
クリックします。この時点で、データベースからモデルを生成する必要があります。
生成されたモデルにデータ注釈を追加する
Entity Framework 5以降で使用されるT4コード生成戦略では、データ注釈属性はデフォルトでは含まれていません。特定のプロパティの上にすべてのモデル再生、オープンテンプレートファイルは(とEDMXに含まれるデータ注釈を含めるには.tt
拡張子)、その後追加using
下の文をUsingDirectives
方法以下のように:
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>
(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.ComponentModel.DataAnnotations; // --> add this line
たとえば、主キーのプロパティを示すKeyAttribute
がテンプレートに含まKeyAttribute
ているとします。モデルの再生成中にKeyAttribute
自動的に挿入するには、以下のようにcodeStringGenerator.Property
を含むコードの一部を探します。
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
次に、if-conditionを挿入してキーのプロパティを確認します。
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
if (ef.IsKey(edmProperty)) {
#> [Key]
<# }
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
上記の変更を適用すると、生成されたすべてのモデルクラスは、データベースからモデルを更新した後に、主キープロパティにKeyAttribute
を持ちます。
前
using System;
public class Example
{
public int Id { get; set; }
public string Name { get; set; }
}
後
using System;
using System.ComponentModel.DataAnnotations;
public class Example
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}