CS0012: тип «System.Data.Linq.DataContext» определен в сборке, на которую нет ссылок - PullRequest
6 голосов
/ 29 ноября 2010

Привет, я получаю эту ошибку:

CS0246: Не удалось найти имя типа или пространства имен 'DataClasses1DataContext' (отсутствует директива using или ссылка на сборку?)

Для этого файла .aspx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class WebApplication1_admin_Places : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataClasses1DataContext db = new DataClasses1DataContext();
        var query = (from m in db.Places orderby m.Name select m);
        PlacesList.DataSource = query;
        PlacesList.DataBind();
    }
}

Дело в том, что в папке / я могу получить доступ к БД, но в папке / admin я получаю эту ошибку.

Что такоеЯ делаю не так?

РЕДАКТИРОВАТЬ

CS0012: Тип 'System.Data.Linq.DataContext' определен в сборке, на которую нет ссылок.Необходимо добавить ссылку на сборку 'System.Data.Linq, версия = 3.5.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'.

Что это значит?

Ответы [ 8 ]

5 голосов
/ 16 ноября 2011

Эта ошибка может возникать, когда попытка загрузить сборку вызвана разметкой .ASPX, даже если на сборку уже ссылается проект!Решение для всего проекта, упомянутое при передаче здесь , заключается в добавлении сборки в список сборок в web.config сборки Элемент для компиляции , например,

<compilation>
 <assemblies>
  <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  ...

Альтернативой для каждой страницы является атрибут страницы @ Assembly , но его необходимо добавить к каждой странице, в результате чего среда выполнения ASP.NET пытается загрузить отсутствующий тип сборки.

5 голосов
/ 29 ноября 2010

Несколько мест для начала:

  • Где находится dll, которая содержит DataClasses1DataContext? Есть ли причина, по которой вы можете получить к нему из одной папки, а не из другой
  • Есть ли файл конфигурации в папке администратора, который переопределяет значения, установленные в корневом файле конфигурации?

Редактировать

Похоже, это проблема конфигурации. Конфиг, вероятно, говорит, что файл msl (модель) находится в текущем каталоге, он находится в корневом каталоге. Поэтому он работает, когда вы находитесь в корне, но не в режиме администратора.

см .: MetadataException при использовании Entity Framework Entity Connection для аналогичной проблемы.

1 голос
/ 04 апреля 2011

Только что у меня появилось то же самое сообщение об ошибке.Решено путем добавления ссылки в проекте в System.Data.Linq через диалог ссылок VS 2010.

1 голос
/ 29 ноября 2010

Что вы имеете в виду " в папке / я могу получить доступ к БД, но в папке / admin я получаю эту ошибку "?

Не имеет значения, в какой папке вы находитесь - контекст использует строку подключения в файле конфигурации (например, web.config). Относительные / абсолютные пути здесь не применяются, это код, а не ресурс.

Есть ли у вас контекст данных в отдельной сборке для вашего веб-приложения?

Вам необходимо импортировать пространство имен, как и все остальное:

1011 * например *

using YourApplication.Data;
0 голосов
/ 08 декабря 2017

Перейдите к узлу «Ссылки» веб-проекта. Найдите ссылку на System.Data.Linq. Откройте окно свойств VS. В окне свойств измените параметр «Копировать локально: От ложного до Истинного».не копировался в каталог bin.(Копирование его вручную в каталог bin также устранило ошибку)

From: https://stackoverflow.com/a/34356930/125938

0 голосов
/ 18 июня 2016

Так что исправление для меня было добавить LINQTOSQL в папку, где я его использую + Добавьте это внутри в файл webConfig:

<system.web>
<compilation debug="false" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>

0 голосов
/ 26 октября 2015

Если этот проект является проектом LinqToSql и если контекстом данных является «DataClasses1DataContext», имя файла dbml должно быть «DataClasses1.dbml»

Если идентификатор файла .dbml «MyLinqToSql.dbml», имя datacontext должно быть MyLinqToSqlDataContext.

Пожалуйста, проверьте имя файла .dbml и сопоставьте имя контекста данных, как описано выше.

Также, если вы начнете печатать, вы получите имя автоматически в IntelliSense.

0 голосов
/ 01 декабря 2014

Добавить ссылку на вашу модель.в C #

using ProjectName.Models;

Затем добавьте следующую строку в Application_Start() рутина Database.SetInitializer<MyMVCTestContext>(null); (здесь MyMvcTestContext будет вашим именем контекста данных)

Проверьте следующий список, чтобы убедиться, что вы не пропуститеРекомендации.Вам могут понадобиться все из них или нет.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.ModelBinding;
using System.Data;
using System.Data.Entity;
using MyMVCTest.Models;
...