2015-02-12 4 views
10

Попытка получить веб-сайт ASP.NET 5, интегрированный с драйвером C# MongoDB, но столкнувшись с несколькими проблемами.ASP.NET 5 с MongoDB

Прежде всего, приведенные здесь примеры http://docs.mongodb.org/ecosystem/drivers/csharp/ отмечены как устаревшие.

Во-вторых, я получаю действительно странные ошибки компиляции (тип или пространство имен не может быть найдено), когда я пытаюсь построить, даже если все выглядит нормально в среде IDE.

Вот мои самые основные 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(); 
     } 
    } 
} 

Главный вопрос можно ли использовать драйвер C# MongoDB с ASP.NET 5?

Использование Visual Studio 2015 и предварительный таргетинг Kre версия KRE-CoreCLR-x86.1.0.0-бета2

Любая помощь очень ценится!

+0

возможно дубликат [Проблемы с RavenDB.Client ссылки в ASP.NET 5.0 project.json] (http://stackoverflow.com/questions/28423123/problems-with-ravendb-client- reference-in-asp-net-5-0-project-json) –

+0

Пожалуйста, просмотрите дублирующий вопрос, я думаю, что у вас такая же проблема. MongoDB доступен только для настольных ПК ('aspnet50'). В принципе, ваш код строит отлично для DesktopCLR и не работает для CoreCLR. –

+1

Вы не можете ссылаться на нее с coreclr, если пакет не был создан с поддержкой coreclr. Это то, что я уверен, мы увидим, как aspnet5 приближается к RTM. Тем не менее, вы можете использовать его с aspnet5. –

ответ

9

Драйвер C# не поддерживается в CoreCLR, но поддерживается в полном режиме CLR451.

Я создал образец проекта с помощью VS2015 CTP

project.json

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

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

Код

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

Я искал этот же ответ, спасибо Сыну! –

15

Вы можете использовать MongoDB с визуальной студии 2015 (Обновлено 10 ноября).

удалить 1 линия от project.json;

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

Теперь вы можете построить свое решение без каких-либо ошибок или предупреждений.

enter image description here enter image description here

+1

Мужчины хотят использовать версию .NET Core, и теперь это невозможно. – ZOXEXIVO

+0

Какова ваша конкретная проблема, можете ли вы дать некоторые подробности? – fatihyildizhan

+0

Мы должны использовать dnxcore50 выполнения – ZOXEXIVO