Cross posted on MSDN實體集未在實體容器中定義
我們採用手工代碼第一個實體框架System.Data.Sqlite
因此,創建一個新的實體時,我們手動創建表時,C#對象,並將DbSet添加到我們的上下文中。
我有一個非常簡單的對象創建,我收到這個錯誤,當試圖查詢上下文。我已經多次查看了列名和數據類型,但是在這裏我看不到任何不匹配。即使字段中的名稱中包含id,也沒有定義外鍵關係。只是一個獨立的桌子。
最奇怪的部分是我可以添加一個新的實體到上下文中,保存更改,它會被持久保存到數據庫。但是在下一行嘗試檢索實體時,我得到了The entity set is not defined in the entity container
錯誤。我還注意到,如果我將鼠標懸停在實例化的上下文上,則所有其他數據庫集都將具有EF SQL,例如SELECT EXTENT1.myCol as myCol
,但department_resources
集只表示{System.Data.Entity.DbSet<department_resource>}
。
關於這個問題的任何想法?
下面是我的文件摘錄:
DDL
CREATE TABLE department_resources (
dep_res_key VARCHAR PRIMARY KEY,
department_id INT NOT NULL,
resource_id INT NOT NULL);
department_resource.cs
[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
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.
}
你檢查數據庫嗎?這是保存 – Eldho
是的,它被保存在db – wesmantooth
你可以請嘗試通過啓動一個新的數據庫上下文'使用(MyContext db = new MyContext())'並試圖獲取這個新的上下文 – Eldho