2017-01-18 6 views
0

Я работаю, чтобы подключить консольное приложение C# с MongoDb. Сервер MongoDb запущен, так как я могу работать с ним с помощью IDE Mongobooster и командной строки. Я установил последний официальный MongoDB.Driver для подключения v2.4.1, так что в основном я не могу использовать db.document.Save метод как решение. В этом приложении я использовал метод db.document.insert, приведенный ниже, код успешно скомпилирован и выполнен, но мои данные не были сохранены на сервере. Я работаю с .NET Core, поэтому я не могу перейти к старой версии драйверов, поскольку они не поддерживаются .NET Core.MongoDB.Driver с C# .NET Основные данные не сохранены

Студенческая Модель

public class Students 
{ 
    public ObjectId Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string City { get; set; } 
    public string Age { get; set; } 
} 

Это мой объект Connection и объект Student

protected static IMongoClient _client; 
protected static IMongoDatabase _database; 

public static Students GetStudent() 
{ 
    Console.WriteLine("Please enter student first name"); 
    string FNm = Console.ReadLine(); 

    Console.WriteLine("Please enter student last name"); 
    string LNm = Console.ReadLine(); 

    Console.WriteLine("Please enter student age"); 
    string StudentAge = Console.ReadLine(); 

    Console.WriteLine("Please enter city name"); 
    string StudentCity = Console.ReadLine(); 

    Students student = new Students() 
    { 
     FirstName = FNm, 
     LastName = LNm, 
     Age = StudentAge, 
     City = StudentCity, 
    }; 

    return student; 
} 

Главный метод

_client = new MongoClient(); 
_database = _client.GetDatabase("School"); 
var _collection = _database.GetCollection<Students>("StudentDetails"); 

Console.WriteLine("Press select your option from the following\n1 - Insert\n2 - Update One Document\n3 - Delete\n4 - Read All"); 

string userSelection = Console.ReadLine(); 


switch (userSelection) 
{ 
    case "1": 
     _collection.InsertOne(GetStudent()); 
    break; 

    case "2": 

    break; 
..... 
+0

Ваш код в порядке, InsertOne должен добавить документ в коллекцию. Вы уверены, что это действительно было вызвано? Возможно, был userelection «2»? Как вы проверяете, что ваши данные были сохранены? Вы используете какой-нибудь клиент mongodb? Запрос в консоли? –

ответ

0

Есть ли у вас какие-либо classmaps InPlace? Я думаю, это отображает ваш

public ObjectId Id { get; set; } 

к документам поля «_id». Вы не указать значение для этого поля, попробуйте:

Students student = new Students() 
{ 
    Id = ObjectId.GenerateNewId(), 
    FirstName = FNm, 
    LastName = LNm, 
    Age = StudentAge, 
    City = StudentCity, 
}; 
0

В окне консоли он остановил выполнение кода сервера после того, как я нажал ctrl + z он выполнен!

+0

Пожалуйста, используйте ссылку для редактирования по вашему вопросу, чтобы добавить дополнительную информацию. Кнопка «Ответ на сообщение» должна использоваться только для полных ответов на вопрос. - [Из обзора] (/ review/low-quality-posts/14922125) – hardillb

+0

@hardillb, я не очень уверен, в чем именно была проблема, и я не вижу какой-либо конкретной причины, по которой остановилась консоль сервера из-за потери фокуса в окне , Поэтому я отмечаю свой ответ как принятый ответ, чтобы завершить поток. – Anas

Смежные вопросы