サーチ…


データベースからモデルを生成する

Visual Studio Solution Explorerに移動し、 Projectをクリックしてモデルを追加します右マウスADO.NET Entity Data Model選択する

ここに画像の説明を入力

次に、選択したGenerate from databaseし、クリックしNextクリックし、次のウィンドウにNew Connection...あなたは(だろうからモデルを生成するデータベースへとポイントMSSQLMySQLか、 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; }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow