我目前正在制作一个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 :(得分:2)
首先,您需要将要访问的变量公开显示。
public class MongoManagment
{
public MongoCollection<Users> MongoUsers {get; set;}
public void Connect()
{
....
this.MongoUsers = database.GetCollection<Users>("user");
}
然后,您需要引用外部类中的对象:
public MainWindow()
{
....
MongoManagement mm = new MongoManagement();
mm.Connect();
foreach (Users user in mm.MongoUsers.FindAll())
{
//do something with users data here
}
注意这是一个非常简单的示例,您可能不希望每个窗口都有MongoManagment
的副本等。您仍然需要花一点时间来探索这些概念可变生命周期,范围....