2016-10-11 9 views
0

私はASP.NET C#を学ぶ前にC++で始まったWeb開発者です。MVC - モデルプロパティにカスタムクラスを使用する

私はプロパティのデータ型としてカスタムクラスを使用したいプロパティを持つWebアプリケーションのモデルを持っています。 Visual Studioのフォルダ構造にカスタムクラスを格納する場所がわかりません。また、私はこれを正しく設定しているかどうかはわかりません。

カスタムクラス

public class ClassName 
{ 
    public int value1; 
    public int value2; 
} 

public ClassName(int v1) 
{ 
    value1 = v1; 
    value2 = v2 
} 

モデル

public class Model 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public List<ClassName> ClassNames {get; set;} 
} 

私は、データベース上のカスタムクラスを望んでいません。私はVisual Studioでマイグレーションでコードファーストをやっており、カスタムクラスをデータベースにプッシュしようとしています。何がセットアップに間違っているか、私が探しているものを得るために何をする必要があるかに関するアイデア。

+0

を行い、あなたの 'Model'クラスは、データベースから取得するためにあなたのEntity Frameworkの' DbContext'てフックアップされていますか?このタイプのシナリオでは、モデルをDTOオブジェクトから分離する必要があります。コードのEF側についてもっと詳しく説明する必要があります。 – krillgar

+0

あなたの目的は何ですか? ClassNamesコレクションをまったく送信せずにModelオブジェクトをデータベースに格納しようとしていますか?その場合は、[NotMapped]属性を追加するだけです。ただし、コードファースト生成テーブルとは異なるフォーマットでコレクションを格納しようとすると、さらに多くの作業が必要になります。 – PMV

+0

データベースにカスタムクラスを追加したくない場合は、追加マイグレーションIgnoreChangesを実行します。これにより、マイグレーションクラスが作成され、次にUPおよびDOWN機能で必要なコードが削除されます – Gwasshoppa

答えて

0

フォルダ構造 - Asp.Netのモデルビューコントローラのパターンを見てください。とても素敵なパターンです。あなたのモデルを 'models'という名前のフォルダ、 'コントローラ'ビューの 'views'の下にあるコントローラなどに保存してください。

テーブルで 'classname'を使用する限り、行にクラスを使用できるかどうかはわかりません。データベーステーブルがどのようにそれに対応するかは不明です。

おそらく、classnameの別のテーブルを作成し、それらのレコードを外部キーを使用して最初のテーブルに参照する必要がありますか?

0

public class Modelをデータベースに格納しない場合は、VSパッケージマネージャコンソールを使用してadd-migration IgnoreChangesを実行します。

これはIgnoreChangesというマイグレーションクラスを作成し、次にpublic override void Up()public override void Down()の関数では、必要のないコードを削除します。このような

public partial class IgnoreChanges : DbMigration 
{ 
    public override void Up() 
    { 
     // No code here 
    } 

    public override void Down() 
    { 
     // No code here 
    } 
} 

は...変更がデータベースに追加されていないupdate-databaseとvoliaを実行します。

あなたは基本的に、マイグレーションがデータベースにモデルを実行したと考えていることに騙されています。

add-migrationを実行した時点でデータベースのスナップショットを取得すると、データベースに公開したくないコードを削除しても、コードを削除しても変更が生成されたことが認識されますpublic override void Up()public override void Down()機能

希望から、これは意味

関連する問題