2015-02-12 4 views
10

Próbujesz uzyskać stronę ASP.NET 5 zintegrowaną ze sterownikiem MongoDB C#, ale działającą z kilkoma problemami.ASP.NET 5 z MongoDB

Przede wszystkim wymienione tutaj przykłady http://docs.mongodb.org/ecosystem/drivers/csharp/ są oznaczone jako przestarzałe.

Po drugie, otrzymuję bardzo dziwne błędy kompilacji (nie można znaleźć typu lub przestrzeni nazw), gdy próbuję tworzyć, mimo że wszystko wygląda dobrze w IDE.

Oto moje bardzo podstawowe HomeController.cs

using Microsoft.Framework.DependencyInjection; 
using Microsoft.AspNet.Mvc; 
using MongoDB.Driver; 
using System; 

namespace Docker.Web.Controllers 
{ 
    public class HomeController : Controller 
    { 
     private AppSettings _appSettings; 

     public HomeController(IServiceProvider serviceProvider) 
     { 
      _appSettings = serviceProvider.GetService<AppSettings>(); 
     } 

     public IActionResult Index() 
     { 
      var server = new MongoClient(_appSettings.MongoConnection).GetServer(); 
      var database = server.GetDatabase(_appSettings.MongoDatabase); 

      return View(); 
     } 
    } 
} 

Główne pytanie mogę użyć sterownika C# MongoDB z ASP.NET 5?

użyciu programu Visual Studio 2015 i podgląd kierowania kre wersję KRE-CoreCLR-x86.1.0.0-beta2

Każda pomoc jest mile widziana!

+0

możliwe duplikat [Problemy z RavenDB.Client odniesienia w asp.net 5,0 project.json] (http://stackoverflow.com/questions/28423123/problems-with-ravendb-client- reference-in-asp-net-5-0-project-json) –

+0

Proszę zobaczyć duplikat pytania, myślę, że masz ten sam problem - MongoDB jest dostępny tylko dla Desktop CLR ('aspnet50'). Zasadniczo, kod buduje się dobrze dla DesktopCLR i kończy się niepowodzeniem dla CoreCLR. –

+1

Nie można odwoływać się do niego z coreclr, chyba że pakiet został zbudowany z obsługą coreclr. Jest to coś, co jestem pewien, że zobaczymy, jak aspnet5 zbliża się do RTM. Możesz jednak nadal używać go z aspnet5. –

Odpowiedz

9

Sterownik C# nie jest obsługiwany w CoreCLR, ale jest obsługiwany w pełnym trybie CLR451.

stworzyłem przykładowy projekt za pomocą VS2015 CTP

project.json

{ 
    "version": "1.0.0-*", 
    "dependencies": { 
     "mongocsharpdriver": "1.10.0.0" 
    }, 

    "frameworks": { 
     "aspnet50": { 
      "dependencies": { 
      } 
     } 
    } 
} 

kod

using System; 
using System.Linq; 
using MongoDB.Driver.Linq; 
namespace MongoDBvNext 
{ 
    public class Class1 
    { 
     public Class1() 
     { 
      var client = new MongoDB.Driver.MongoClient(""); 
      var server = client.GetServer(); 
      var db = server.GetDatabase("samples"); 
      var samples = db.GetCollection<Sample>("samples"); 
      samples.Insert(new Sample { Name = "sample" }); 
      var sample = samples.AsQueryable<Sample>().Where(x => x.Name == "Sample").FirstOrDefault(); 
      if (sample == null) 
       Console.WriteLine("id: {0} name: {1} ", sample.Id.ToString(), sample.Name); 
      else 
       Console.WriteLine("Data does not exists"); 
     } 

     public class Sample 
     { 
      public string Name { get; set; } 
      public MongoDB.Bson.ObjectId Id { get; set; } 
     } 
    } 
} 
+0

Szukałem tej samej odpowiedzi, dzięki Synu! –

15

Można używać MongoDB z Visual Studio 2015 (aktualizacja 10 listopada).

usunięcie 1 linii z project.json;

"frameworks": { 
    "dnx451": { }, // don't forget to remove ',' 
    "dnxcore50": { } // remove this line 
} 

teraz możesz zbudować swoje rozwiązanie bez żadnych błędów i ostrzeżeń.

enter image description here enter image description here

+1

Mężczyźni chcą używać wersji .NET Core, a teraz nie jest to możliwe. – ZOXEXIVO

+0

Jaki jest twój dokładny problem, czy możesz podać trochę szczegółów? – fatihyildizhan

+0

Musimy użyć dnxcore50 czas pracy – ZOXEXIVO