我正在玩EF中的POCO,從小型基本設置工作到更先進的東西。沒有泛型的接口,只是一個簡單的入口點。 首先,我創建了一個.edmx文件,其中只包含一個實體:Person,具有3個屬性。 Id,FirstName和LastName。嘗試使用ObjectContext連接到數據庫,但失敗
有了這個,我生成了數據庫並手動添加了幾條記錄。這個數據庫被稱爲「PocoTest」在我App.Config中的連接位的樣子:
<add name="PocoTestContainer" connectionString="metadata=res://*/PocoTest.csdl|res://*/PocoTest.ssdl|res://*/PocoTest.msl;provider=System.Data.SqlClient;provider connection string="Data Source=SEBASTIAAN-PC\SQLEXPRESS;Initial Catalog=PocoTest;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
首先我創建了一個實體:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
現在,我創建了一個語境,從ObjectContext的繼承:
public class PocoTestContext : ObjectContext
{
private IObjectSet<Person> persons;
public PocoTestContext()
: base("name=PocoTestContainer", "PocoTestContainer")
{
ContextOptions.LazyLoadingEnabled = true;
persons = CreateObjectSet<Person>();
}
public IObjectSet<Person> Persons
{
get
{
return persons;
}
}
}
這裏沒什麼特別的。接下來的事情就是一個倉庫:
public class PersonRepository
{
PocoTestContext context;
public PersonRepository()
{
context = new PocoTestContext();
}
public Person GetById(int id)
{
return context.Persons.Where(p => p.Id == id).FirstOrDefault();
}
public List<Person> GetAll()
{
List<Person> persons = null;
try
{
persons = context.Persons.ToList();
}
catch(Exception e)
{
Console.WriteLine(e.InnerException);
}
return persons;
}
public void Add(Person entity)
{
context.Persons.AddObject(entity);
}
public void Save()
{
context.SaveChanges();
}
}
現在,這一切編譯罰款,但我似乎無法連接到數據庫,因爲我沒有得到任何結果返回。當我檢查PocoTestContext構造函數中的連接狀態時,連接沒有建立。 現在我猜測我使用連接字符串的方式有問題。我從另一個項目中偷取了這種方法,我在其中使用了一個生成的存儲庫。
任何幫助將不勝感激!
好的,但是這隻會改變我的問題陳述,我沒有得到任何記錄返回,而有。 因此,我必須錯過其他東西,任何指針在那個方向? – duress