2 つのクラスを持つデータベースがあり、1 対多の関係が設定されています。これはショップとして設定されています (コードを実行しているメインクラスで、db でショップが販売する製品のカテゴリのリストに結合されています。
したがって、テーブルは次のとおりです。
shops
int id //shopId & primaryKey
varchar(50) shopName
... //other details left out.
ShopProductTypes
int id //Category id
int ShopId //Foreign Key to shop table
varchar(50) CategoryName
...
これはすべて簡単で、SQL ビューアーなどを介して機能します。
データベース モデルをインポートし、Pluralize / Singularize ボックスのチェックを外しました。
私の文脈は;
public ReportingContext(string connectionString) : base(connectionString)
{
Database.SetInitializer<ReportingContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public DbSet<AutoComp_Reporting.DAL.Shop> Shops{get; set;}
public DbSet<AutoComp_Reporting.DAL.ShopProductTypes> ShopCategories { get; set; }
}
しかし、私が走るとき。
var foo = (from s in context.Shops
where (s.Id == id).select s).toList();
すべてのショップを表示できますが、QuickWatch でカテゴリを表示しようとすると、次の例外が発生します。
{"コマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。"}
System.Data.EntityException {System.Data.EntityCommandExecutionException}
最終的に明らかになる巻き戻し。
Message "Invalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'."
私はエンティティ フレームワークを初めて使用するので、何か間違っている可能性がありますが、このエラーを修正することはできません。MultipleActiveResultSets=True
データベース接続文字列を取得しました。
では、このエラーの原因を突き止めたり、修正したりするにはどうすればよいでしょうか? 実際の内部例外は、フレームワークがプロパティを解釈する方法にあると推測しているため、ニシンである可能性があります..