2016-09-26 1 views
0

У меня возникла проблема с переносом документа в другой документ для создания встроенного документа в C#.Как нажать, чтобы сделать emdeded документ в mongodb C# драйвер

мои модели выглядит следующим образом:

public class ModelKnjiga 
{ 
    public ModelKnjiga() { } 



    [BsonId(IdGenerator = typeof(CombGuidGenerator))] // pojavljuje se greška kod BSON tipa podataka kod ID-a,preuzoteo s dokumentacije drivera 1.5 
    public Guid Id { get; set; } 

    [BsonElement("naziv")] 
    public string naziv { get; set; } 


    [BsonElement("autor")] 
    public string autor { get; set; } 


    [BsonElement("godina_izdanja")] 
    public string godina_izdanja { get; set; } 


    [BsonElement("izdavac")] 
    public string izdavac { get; set; } 

    [BsonElement("ocjena")] 
    public String ocjena { get; set; } 


    [BsonElement("čitam")] 
    public Boolean čitam { get; set; } 

    [BsonElement("završio")] 
    public Boolean završio { get; set; } 
} 

другая модель выглядит следующим образом:

public ModelKorisici() { 

     KnjigaLista = new List<ModelKnjiga>(); 
    } 



    [BsonId] // pojavljuje se greška kod BSON tipa podataka kod ID-a,preuzoteo s dokumentacije drivera 1.5 CombGuidGenerator 
    public Guid Identifikator { get; set; } 


    [BsonElement("ime")] 
    public string ime { get; set; } 


    [BsonElement("prezime")] 
    public string prezime { get; set; } 


    [BsonElement("lozinka")] 
    public string lozinka { get; set; } 


    [BsonElement("email")] 
    public string email { get; set; } 

    [BsonElement("kor_ime")] 
    public string kor_ime { get; set; } 

    [BsonElement("uloga")] 
    public string uloga { get; set; } 


    public List<ModelKnjiga> KnjigaLista { get; set; } 


} 

и теперь я Тринг толкать modelKnjiga в modelKorisici

Я пытаюсь с этим методом ...

public void dodajKnjiguKorisniku(ModelKnjiga knjiga, Guid id) 
    { 
     MongoCollection<ModelKorisici> korisniciKolekcija = GetTasksCollectionKlijenti(); 
     try 
     { 
      var pronadiKorisnika = Query<ModelKorisici>.EQ(e => e.Identifikator, id); 
      var PushPodataka = Update<ModelKorisici>.Push(e => e.KnjigaLista, knjiga); 

      korisniciKolekcija.Update(pronadiKorisnika, PushPodataka); 
     } 

     catch (MongoCommandException ex) 
     { 
      string msg = ex.Message; 
     } 
    } 

В robomongo, объект KnjigaLista всегда Null ...

Может кто-нибудь помочь?

ответ

0

Я думаю, что обновление устарело.

(в моделях вы не должны использовать только строку. Например .: godina_izdanja может быть DateTime(), и ocjena некоторого числового формата ...)

Я сделал (асинхронный) пример с вашим модели, надеюсь, что это помогает:

class Program 
    { 
     static void Main(string[] args) 
     { 
      MainAsync(args).GetAwaiter().GetResult(); 
      Console.WriteLine(""); 
      Console.WriteLine("press enter"); 
      Console.ReadKey(); 
     } 

     static async Task MainAsync(string[] args) 
     { 
      ModelKnjiga knga = new ModelKnjiga() 
      { 
       autor = "Author", 
       godina_izdanja = "2015", 
       izdavac = "izdavac", 
       naziv = "naziv", 
       ocjena = "20", 
       završio = true, 
       čitam = true 
      }; 

      ModelKnjiga knga2 = new ModelKnjiga() 
      { 
       autor = "Author2", 
       godina_izdanja = "2016", 
       izdavac = "izdavac2", 
       naziv = "naziv2", 
       ocjena = "202", 
       završio = false, 
       čitam = false 
      }; 

      ModelKnjiga knga3 = new ModelKnjiga() 
      { 
       autor = "Author3", 
       godina_izdanja = "2017", 
       izdavac = "izdavac3", 
       naziv = "naziv3", 
       ocjena = "203", 
       završio = false, 
       čitam = true 
      }; 

      ModelKorisici mcor = new ModelKorisici() 
      { 
       email = "[email protected]", 
       ime = "ime", 
       KnjigaLista = new List<ModelKnjiga>() { knga, knga2 }, 
       kor_ime = "kor_ime", 
       uloga = "uloga", 
       lozinka = "lozinka", 
       prezime = "prezime" 
      }; 

      var client = new MongoClient(); 
      var db = client.GetDatabase("KnjigaDB"); 
      var korisici = db.GetCollection<ModelKorisici>("Korisici"); 

      //After first run comment this line out 
      await korisici.InsertOneAsync(mcor); 


      //After first run UNcomment these lines 
      //var filter = Builders<ModelKorisici>.Filter.Eq("email", "[email protected]"); 
      //var update = Builders<ModelKorisici>.Update.Push("KnjigaLista", knga3); 
      //await korisici.UpdateOneAsync(filter, update); 
     } 

    } 

, если вам не нравится асинхр, измените последнюю строку с этим:

korisici.UpdateOne(filter, update); 
Смежные вопросы