Будьте нежны, его всего лишь иллюзия, что она выглядит как дубликат, но различные обстоятельства;)Ссылка на объект не указывает на экземпляр объекта выброшен из 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>
Если вы не хотите, чтобы вопрос дублировался, вам необходимо предоставить действительную информацию.Пока ваш пост очень близок к «произошла ошибка, и я много старался». Для того, чтобы кто-то, не знакомый с вашим кодом, должен быть более подробным, чтобы предложить некоторые конкретные шаги для его решения. –
@AlexeiLevenkov, я понимаю, что вы говорите. Его также выглядит довольно расплывчатым из-за кода и шагов. Я сделаю редактирование и покажу все и добавлю больше деталей. – Chris
Почти все случаи «NullReferenceException» одинаковы. См. «[Что такое исключение NullReferenceException в .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)» для некоторых советов. –