Reputation: 77
I'm playing around with POCOs in EF, working from a tiny basic setup to something more advanced. No interfaces of generics, just an easy point of entry. First of all I created an .edmx file, containing just one entity: Person, with 3 attributes. Id, FirstName and LastName.
With this I generated the database and added a few records into it manually. This database is called 'PocoTest' and the connection bit in my App.Config looks like:
<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" />
Firstly i created an Entity:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Now I created a Context, inheriting from the 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;
}
}
}
Nothing fancy here. Next thing is a repository:
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();
}
}
Now all of this compiles fine, but I can't seem to connect to the database, since i don't get any results returned. When I check the connectionstate in the PocoTestContext constructor the connection isn't established. Now I'm guessing something is wrong with the way I use the connectionstring. I stole this approach from another project in which I did use a generated repository.
Any help would be greatly appreciated!
Upvotes: 1
Views: 563
Reputation: 77
I've come up with the solution, the edmx file held a reference to 'PersonSet', I manually changed this to 'Person'. Now I get the expected results.
Upvotes: 1
Reputation: 364349
Connection is not established in the constructor. It is established when it is needed and closed once it is not needed.
Upvotes: 1