작은 기본 설정에서 좀 더 고급 작업까지 EF에서 POCO로 놀고 있습니다. 제네릭 인터페이스가 없으므로 쉬운 진입 점이 있습니다. 우선, 3 개의 속성을 가진 하나의 엔티티 : Person을 포함하는 .edmx 파일을 만들었습니다. Id, 성 및 성.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 생성자에서 connectionstate를 확인할 때 연결이 설정되지 않습니다. 이제 연결 문자열을 사용하는 방식에 문제가 있다고 생각합니다. 나는 생성 된 저장소를 사용했던 다른 프로젝트에서이 접근법을 훔쳤다.
도움이 될 것입니다.
그래,하지만 이건 내 problemstatement를 바꿀 뿐이야, 나는 어떤 기록도 돌려받지 못했다. 그래서 나는 그 방향에서 어떤 다른 포인터를 놓치고 있어야합니까? – duress