2016-11-29 5 views
1

Что я хочу сделать: использовать контекст и репозитории более старого проекта (.net 3.5) в ядре .net-приложения (target .net 4.5). Я поставил более подробное объяснение и то, что я попробовал ниже..NET Core - целевая старая .net-инфраструктура

То, что я хочу сделать

Я строю приложение MVC с использованием .NET ядра (на .NET 4.6 Framework) в моей работе. Приложение необходимо интегрировать с существующей базой данных.

Обычно в моих приложениях .NET MVC ядро, в startup.cs я сделать что-то вроде:

services.DbContext<Context>(options...) и разобрать строку подключения. Затем я делаю services.AddTransient ... и внедряю репозиторий в мои контроллеры, что позволяет мне обращаться к базе данных.

Однако вместо того, чтобы настраивать свой собственный контекст базы данных и репозитории и запросы, я хотел бы использовать существующую кодовую базу в своей работе. Я создал свой проект в том же решении, что и существующие. Существующие проекты представляют собой веб-формы и используют .NET 3.5. То, как они делают базу данных и хранилища, немного отличается - оно использует DataContext в System.Data.Linq и читает строку подключения от web.config. Затем вместо инъекции зависимостей контроллеры просто создают экземпляр этого класса.

То, что я пытался

В моем startup.cs я попытался создать DataContext и разобрать его в хранилище другого проекта, но он сказал что-то вроде You need to reference System.Data.Linq in the .NET framework 3.5.0.

Итак, мой вопрос: 1) возможно ли, что проект .NET Core, предназначенный для .NET .NET, использовать классы контекста данных и репозитории, используя .NET 3.5?

Благодарим за любые советы по этой проблеме.

+0

Я бы построил два проекта. Один из них как проект класса с использованием Net 3.5 для старого кода. Затем создайте основной проект с помощью Net 4.5, который ссылается на проект класса. – jdweng

+0

привет @jdweng - это текущее настроение, на самом деле. Таким образом, старый проект (который не является проектом запуска), который использует 3.5, требуется инициализировать datacontext, который, как я думаю, не существует в том же файле в .net 4.5. Я попытался создать его таким же образом, как это делает проект .net 3.5, а затем передать его в репозитории более старого проекта, но где я его инициализировал в проекте .net 4.5, стал красным и бросил ошибки, попросив меня включить что-то из 'system .data.linq', который существует в .net 3.5, но, похоже, не присутствует в .net 4.5. Вот в чем проблема, с которой я борюсь. – xenetics

+0

http://stackoverflow.com/questions/34830033/asp-net-5-missing-linq-to-sql-class После того, как вы это сделали, вы можете обернуть эти объекты в пригодные для использования объекты в своем основном приложении .net –

ответ

0

Я действительно решил свою проблему. Я не думаю, что я был достаточно ясен. Вот что мое решение, как:

Solution - проект .NET 3.5 - проект .NET 4.5

Я создавал хранилище из проекта .NET 3.5 в моем новом один, и это создает DataContext который ищет файл web.config. Несмотря на то, что я создал его, похоже, он должен попытаться найти это web.config внутри проекта запуска, независимо от того, где создается контекст данных. Я сделал один, но он все еще не обнаружил этого, я не знаю, почему.

Мне удалось войти в старый проект и изменить файл datacontext, чтобы напрямую получить строку соединения. Однако это не идеально - я буду искать способ передать строку подключения в старый проект из моей новой, что, я думаю, является хорошим решением.

@jwdeny был прав, говоря, что мне пришлось добавить ссылку на System.Data.Linq. Проект сказал мне добавить ссылку на 3.5, но добавить System.Data.Linq 4.0 было достаточно.