1

VS2012 で MVC4 と EF Data First を利用するプロジェクトに取り組んでいます。テーブルには、フィールド名に「id」が含まれていない主キーがあるため、EF はそれを主キーとして使用する必要があることを認識していません。EF がコードを生成したら、次の注釈と using ステートメントを追加します。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public partial class Game
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int GameNumber { get; set; }

生成コードに基づいてモデルを作成した場合、データベース モデルを更新すると、行ったカスタム変更は破棄されます。カスタム変更を保持し、データベース EF データ モデルを更新するにはどうすればよいですか。

ありがとう

4

1 に答える 1

0

MetadataTypeAttribute( MSDN ) を使用して、エンティティ クラスの部分実装でメタデータ クラスを定義し、そのメタデータ クラスのプロパティを装飾します。

装飾された部分クラスの実装は、DB からの更新を維持するために、自動生成されたファイル以外のファイルに存在する必要があることに注意してください。

(質問: モデルが最初に DB である場合、テーブルの PK が何であるかがわからないのはなぜですか?モデルを生成するためにテーブル スキーマを読み取るときにGame、プロパティが最後にあるかどうかは問題ではありません... Id)

[MetadataType("GameMetadata")]
public partial class Game
{
    public class GameMetadata
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int GameNumber; 
    }
}
于 2013-10-05T01:47:50.590 に答える