2015-01-21 17 views
0

Будьте нежны, его всего лишь иллюзия, что она выглядит как дубликат, но различные обстоятельства;)Ссылка на объект не указывает на экземпляр объекта выброшен из DAL в отдельный проект

У меня есть решение с тремя отдельными проекты, основной проект и проект BLL и DAL (n-ярус). В DAL я создал классы Linq To SQL из существующей базы данных, а также класс, который имеет все операции crud, и другой класс для пользовательских классов данных. Основной проект ссылается на BLL, а BLL ссылается на DAL.

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

Ссылка на объект не установлена ​​в экземпляр объекта.

и подводит меня к этому методу в мой дизайнер Linq To SQL классов (.dbml)

public BasicInventoryDBDataContext() : 
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["BasicInventoryConnectionString"].ConnectionString, mappingSource) 

Когда я пытаюсь DataBind к сетке. Я заглянул в свой webconfig для проекта DAL, и это кажется законным, потому что там есть строка подключения.

Я посмотрел на SO и увидел похожие вопросы к этой ошибке, но ни одно из них не было (что я нашел), когда DAL находится в отдельном проекте, не говоря уже об использовании Linq To SQL.

Я пробовал, удаляя проекты DAL и BLL и воссоздавая их (не так уж много, поскольку я только что начал проект и его в зачаточном состоянии). У меня не было этой проблемы, когда у меня есть классы Linq To SQL в том же проекте. Любые идеи?

EDIT Вот страница, которую я использую, чтобы убедиться, что все работает до продолжения.

#region Initialization 

public BasicInventoryDAL bl = new BasicInventoryDAL(); 

#endregion 

protected void Page_Load(object sender, EventArgs e) 
{ 
    rgVendor.DataSource = bl.GetVendorBrowse(); 
    rgVendor.DataBind(); 
} 

Я поставил перерыв инициализации BasicInventoryDAL, и когда я пошагово, его подводит меня к DAL проекта

public class BasicInventoryDAL 
{ 
    #region Initialization 

    public BasicInventoryDBDataContext dc = new BasicInventoryDBDataContext(); 

    #endregion 

    public List<VendorBrowse> GetVendorBrowse() 
    { 
     List<VendorBrowse> lst = new List<VendorBrowse>(); 

     var queryGetVendorBrowse = from f in dc.vw_Vendor_Browses 
            select f; 

     foreach (var v in queryGetVendorBrowse) 
      lst.Add(new VendorBrowse 
      { 
       VendorID = v.VendorID, 
       VendorName = v.VendorName, 
       City = v.City, 
       Country = v.Country 
      }); 

     return lst; 
    } 
} 

Как только он попадает в public BasicInventoryDBDataContext dc = new BasicInventoryDBDataContext(); Именно тогда ошибка становится выброшены.

Вот строка соединения в моем веб-конфигурации

<connectionStrings> 
    <add name="BasicInventoryConnectionString" connectionString="Data Source=HERBERT\SQLEXPRESS;Initial Catalog=BasicInventory;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 
+0

Если вы не хотите, чтобы вопрос дублировался, вам необходимо предоставить действительную информацию.Пока ваш пост очень близок к «произошла ошибка, и я много старался». Для того, чтобы кто-то, не знакомый с вашим кодом, должен быть более подробным, чтобы предложить некоторые конкретные шаги для его решения. –

+0

@AlexeiLevenkov, я понимаю, что вы говорите. Его также выглядит довольно расплывчатым из-за кода и шагов. Я сделаю редактирование и покажу все и добавлю больше деталей. – Chris

+1

Почти все случаи «NullReferenceException» одинаковы. См. «[Что такое исключение NullReferenceException в .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)» для некоторых советов. –

ответ

0

NullReferenceException был брошен, потому что строка соединения была определена в неправильном конфигурационном файле. Сгенерированный код предполагал, что строка подключения доступна. Это было плохое предположение, даже если Microsoft сделала плохое предположение.

С 1-го дня конфигурация .NET всегда была в файле конфигурации, связанном с кодом . В случае ASP.NET он должен быть в файлах web.config, связанных с веб-приложением. В случае с .EXE оно должно быть в с именем программы .exe.config.

 Смежные вопросы

  • Нет связанных вопросов^_^