2016-04-16 4 views
0

Cross posted on MSDNエンティティセットはエンティティコンテナで定義されていない

我々は、マニュアルコードを使用System.Data.Sqlite

のための最初のEntity Frameworkの新しいエンティティを作成するときに、我々は、手動でテーブルを作成し、C#のオブジェクトを作成し、DbSetをコンテキストに追加します。

非常に単純なオブジェクトが作成されており、コンテキストを照会しようとするとこのエラーが発生します。何度も列名とデータ型をチェックしましたが、ここで不一致は見られません。フィールドには名前にidが含まれていても、外部キー関係は定義されていません。スタンドアロンのテーブル。

私がコンテクストに新しいエンティティを追加して変更を保存し、それがdbに保存されるというのは、最も奇妙な部分です。しかし、次の行でエンティティを取得しようとすると、私はThe entity set is not defined in the entity containerエラーを受け取ります。インスタンス化されたコンテキストにカーソルを置くと、他のすべてのdbセットにはSELECT EXTENT1.myCol as myColなどのEF SQLがありますが、department_resourcesセットはちょうど{System.Data.Entity.DbSet<department_resource>}と表示されています。

問題の原因は何ですか?

以下は私のファイルの抜粋です:

[Table("department_resources")] 
public class department_resource 
{ 
    [Key] 
    public string dep_res_key { get; set; } 
    public int department_id { get; set; } 
    public int resource_id { get; set; } 
} 

MyContext.cs

CREATE TABLE department_resources (
dep_res_key VARCHAR PRIMARY KEY, 
department_id INT NOT NULL, 
resource_id INT NOT NULL); 

department_resource.cs

DDL

public class MyContext : DbContext 
{ 
public DbSet<department_resource> department_resources { get; set; } 
} 

使用例

using (MyContext db = new MyContext()) 
{ 
    db.department_resources.Add(new department_resource() 
     { dep_res_key = "anID", 
     resource_id = 22, 
     department_id = 23 }); // Works 

    db.SaveChanges(); // Also works. Even persists to db 

    var foo = from r in db.department_resources 
       select r.resource_id; // Doesn't work. Will error as soon as I try to use foo. Like assigning to a combo box item source. Or even just enumerating the results 

    var bar = db.department_resources; // Also doesn't work. 

} 
+1

データベースをチェックインしましたか?これは保存されています – Eldho

+0

はいそれはdbに保存されています – wesmantooth

+0

新しいデータベースコンテキスト 'using(MyContext db = new MyContext())を起動し、この新しいコンテキストの内部を取得しようとしてください。 – Eldho

答えて