私はかなり複雑なSQLデータベースでウェブサイトを構築しています。複数のプリミティブフィールド(すべて正常に機能します)と複数のを保持
するクラスを作成しました。私のソリューションのフォルダの下にも定義されています。また、の単一のインスタンスを保持します。次に、を継承するクラスを作成しました。QueryList<SomeType>SomeTypeModelsSomeTypeQueryDBContextDbContext
Generate文字列を受け取り、完全に形成されたQueryインスタンスを作成する関数があります。すぐに送信すると、View問題なく動作します。しかし、それを自分のに格納するとDB、プリミティブ値のみが保持され、参照型(Lists<SomeType>との両方SomeType)はになりnullます。
問題は、EFが参照型をサポートしていないことだと思います。あるいは、この場合に何か特別なものが必要なのでしょうか。
これがQuery
public class Query
{
[Key]
public int id { get; set; }
public SomeType Base { get; set; }
public List<SomeType> Derived { get; set; }
//more of these
public string SmallGraphImage { get; set; }
public string MediumGraphImage { get; set; }
public string LargeGraphImage { get; set; }
}
public class QueriesDBContext : DbContext
{
public DbSet<Query> Queries { get; set; }
}
これがSomeType
public class SomeType
{
[Key]
public int id { get; set; }
public string ExpandedOutForm { get; set; }
public string ExpandedInForm { get; set; }
//more strings
}
注:データベースはプリミティブに対して正常に機能します。開発の目的で、Controller変更ごとにデータベースを削除して再構築するを作成しました。また、に置き換えListてみましたIList。
EFが参照型をサポートしていない場合、どうすればよいですか?動作しstructsますか?Listsデータベースエントリ内に保存するにはどうすればよいですか?(ええ、IDを使用して別のテーブルに保存できますが、EFにはこれに対するより洗練されたソリューションがあると思います)