2014-07-27 4 views
0

현재 WPF 응용 프로그램을 만들고 있으며 mongo 데이터베이스를 추가 할 준비가되었지만 최선의 프로세스를 찾을 수없는 것 같습니다. 지금 내가 그렇게처럼 그 일을하고있다 :도메인 클래스를 설정하는 적절한 방법은 무엇입니까?

MongoManagment.cs :

namespace MoneyManagment 
{ 
    class MongoManagment 
    { 
     public void Connect() 
     { 
      String connectionString = "mongodb://localhost"; 
      MongoClient client = new MongoClient(connectionString); 
      MongoServer server = client.GetServer(); 
      MongoDatabase database = server.GetDatabase("MoneyManagment"); //Connect to the database 
      MongoCollection<Users> _users = database.GetCollection<Users>("user"); // "user" is the collection name, "Users" is the domain class 

     } 
    } 

    public class Users 
    { 
     public ObjectId _id { get; set; } 
     public string username { get; set; } 
    } 
} 

는 내가 MainWindow.xaml.cs를 도메인 클래스에서 데이터를 액세스하려고 :

namespace MoneyManagment 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      foreach (Users user in _users.FindAll()) 
      { 
       //do something with users data here 
      } 
     } 
    } 

그리고 여기서 VS가 _users에 액세스 할 수 없다는 오류가 발생합니다. 어느 정도 이해가되지만, 문제는 해결할 수있는 여러 가지 방법을 시도했지만 실제로 작동하지 않습니다. 이것에 대해 더 좋은 방법. 어떤 아이디어?

+0

실제로 '_users' 변수를 어디에서 인스턴스화 했습니까? 일반적으로 _로 시작하는 변수는 개인용이며 전체 응용 프로그램 스택에서 액세스 할 수 없다는 것을 나타냅니다. 두 경우 모두, 예제의'MainWindow' 클래스는 변수에 대한 참조를 보유하지 않습니다. – Claies

+0

@AndrewCounts 오른쪽, 그렇지 않습니다. 내가 그것을 참조하는 다른 방법을 시도하고 아무도 일한 적이 없으므로 무엇을하려고하는 것보다 이것에 대해 갈 수있는 더 좋은 방법이 있습니까? 그것은 보통 어떻게 이루어 집니까? 메신저와 C#에 새로운 ... – Halter

+0

당신의 선언은 C# 용어로 전혀 이해가되지 않습니다. 당신이 보여주는 것은'MongoManagement' 클래스의'Connect' 함수의 범위에서 선언되었지만 전혀 다른 클래스로부터 접근하려고하는'_users' 변수입니다. http://msdn.microsoft.com/en-us/library/ms973875.aspx에서 변수 및 범위 (이전 기사, 주로 VB이지만 개념은 유효 함)와 관련하여 읽어보십시오. – Claies

답변

2

먼저 액세스하려는 변수가 공개되어 있어야합니다. ,

public MainWindow() 
    { 
     .... 
     MongoManagement mm = new MongoManagement(); 
     mm.Connect(); 
     foreach (Users user in mm.MongoUsers.FindAll()) 
     { 
      //do something with users data here 
     } 

참고 이것은 매우 간단한 예를 들어, 당신은 모든 윈도우 MongoManagment의 사본을하지 않을 수 있습니다 :

public class MongoManagment 
{ 
    public MongoCollection<Users> MongoUsers {get; set;} 

    public void Connect() 
    { 
     .... 
     this.MongoUsers = database.GetCollection<Users>("user"); 
    } 

는, 당신은 외부 클래스의 객체를 참조 할 필요가 가변 수명주기, 범위의 개념을 탐구하는 데 약간의 시간을 보내고 싶을 것입니다.

관련 문제