コードファーストのパラダイムは初めてなので、ご容赦ください。データベースで作成されたプリミティブまたはカスタム クラスのコレクション/リスト/配列をエンティティ クラスから取得できません。その結果、テーブルを適切にシードできません。エラーはありません。コレクション以外のすべてのプロパティを持つエンティティ テーブルを取得するだけです。EF5、VS2010、MVC4、および SqlExpress を使用しています。私は何を間違っていますか?
私のエンティティクラス:
public class MyEntity
{
public int MyEntityID { get; set; } // GOOD
public string Property1 { get; set; } // GOOD
public bool Property2 { get; set; } // GOOD
public IList<CustomClass> CustomClassList { get; set; } //BAD, NOT CREATED ON DB
public CustomClass[] CustomClassArray { get; set; } //BAD, NOT CREATED ON DB
}
私のカスタムクラス:
[ComplexType]
public class CustomClass
{
public string Title { get; set; }
}
私の構成/移行クラス
public class Configuration : DbMigrationsConfiguration<MyContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(MyContext context)
{
context.MyEntity.AddOrUpdate(x => x.MyEntityID,
new MyEntity()
{
Property1 = "abc",
Property2 = "xyz",
CustomClassList = new List<CustomClass> {new CustomClass{Title="Help"}}
}
context.SaveChanges();
}
}
私の Global.asax.cs Application_Start() メソッド
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
新しいデータベースを作成しようとすると、同じ結果が得られます。
<!--NO LUCK-->
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS2;Initial Catalog=TESTDB_2;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
<!--NO LUCK-->
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS2;Initial Catalog=TESTDB_3;Integrated Security=SSPI" providerName="System.Data.SqlClient" />