Я играю с POCO в EF, работая от крошечной базовой настройки до чего-то более продвинутого.Нет интерфейсов дженериков, просто точка входа.Прежде всего я создал файл .edmx, содержащий только одну сущность: Person, с 3 атрибутами.Id, FirstName и LastName.
С этим я сгенерировал базу данных и добавил несколько записей в нее вручную.Эта база данных называется «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" />
Сначала я создал Entity:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Теперь я создал Context, наследуяиз 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, соединение не устанавливается.Теперь я предполагаю, что что-то не так с тем, как я использую строку подключения.Я украл этот подход из другого проекта, в котором я использовал сгенерированный репозиторий.
Любая помощь будет принята с благодарностью!