2011-08-02 2 views
1

작은 기본 설정에서 좀 더 고급 작업까지 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=&quot;Data Source=SEBASTIAAN-PC\SQLEXPRESS;Initial Catalog=PocoTest;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;" 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를 확인할 때 연결이 설정되지 않습니다. 이제 연결 문자열을 사용하는 방식에 문제가 있다고 생각합니다. 나는 생성 된 저장소를 사용했던 다른 프로젝트에서이 접근법을 훔쳤다.

도움이 될 것입니다.

답변

1

나는 해결책을 내놓았으며, edmx 파일은 'PersonSet'에 대한 참조를 보유하고 있었고, 수동으로 이것을 'Person'으로 변경했다. 이제 예상되는 결과를 얻었습니다.

1

생성자에서 연결이 설정되지 않았습니다. 필요할 때 설치되고 필요하지 않으면 닫힙니다.

+0

그래,하지만 이건 내 problemstatement를 바꿀 뿐이야, 나는 어떤 기록도 돌려받지 못했다. 그래서 나는 그 방향에서 어떤 다른 포인터를 놓치고 있어야합니까? – duress

관련 문제