Ошибки с Entity (модель ADO.NET EDM) и базой данных

ASP.NET   27 августа 2012  Автор статьи:  

В данной статье я расскажу как подружить Entity с базой данных и про их место в трехзвенной архитектуре. Если вы пишите небольшой проект в университет или вы в дальнейшем не собираетесь поддерживать свой код, то вы можете разместить базу данных и Модель ADO.NET EDM(правильное название для Entity) в главном проекте, и тогда у вас не будет никаких проблем и ошибок, так как Visual Stuio сделает все за вас. Но если, вы собираетесь сделать достаточно крупный проект с поддержкой, то вам стоит задуматься о трехзвенной архитектуре. Более подробно о трехзвенной архитектуре говорилось в цикле про ADO.NET. В трехзвенной архитектуре Entity должен располагаться в DAL, так как он имеет прямое отношение к доступу к данным. Базу данных следует помещать не в DAL, где она как бы должна содержаться, а в главный проект, в котором необходимо создать папку App_Data. Это необходимо сделать для того, чтобы ключевое слово DataDirectory отработало правильно и не было необходимости указывать каждый раз полный путь до файла базы данных, при переносе проекта на другой компьютер. После этого нужно поместить строку подключения, которую сгенерировал Entity в Web.config или app.config главного проекта, потому что если вы не сделаете этого, то можете получить следующую ошибку:
[warning] Argument Exception не обработано. Указанное именованное соединение не найдено в конфигурации, не предназначалось для использования с поставщиком EntityClient или недопустимо.[/warning]
У меня данная ошибка возникала при создания объекта доступа без параметров, который берет строку подключения по умолчанию, но так как он ее не находил, то и говорил, что соединение не найдено в конфигурации.
Иногда, после этого возникали ошибки с подключением к Entity, но при перезагрузке они решались, они возникали если из разных проектов обращаться и пытаться присоединить одну и ту же базу данных. И на последок хочу рассказать о том, как не стоит поступать:
[note]Столкнулся на днях с небольшой проблемой. При переносе проекта ASP.NET на сервер, где он должен уже был работать возникали некоторые ошибки. Изначально я создал базу данных внутри SQL Server Express и попытался перенести ее на сервер, сначала я попытался перенести ее с помощью бекапа, но восстановить базу данных не получилось из — за разницы в версиях, тогда я попытался просто выдрать файлы из SQL Server-а и вставить его уже на сервер, но там не сохранились некоторые настройки пользователей. В результате, если донастроить доступ к базе видимо все бы заработало, но я подумал, что проблема кроется в строке подключения и стал перенастраивать Entity, что было не верно, но ошибка Entity Open, навела меня на эту мысль. Тогда я решил, чтобы не искать себе таких проблем, сделать базу данных отдельным файлом, который будет присоединяться к серверу по мере необходимости. Тут я попытался сделать такой файл из базы данных, которая была в SQL Server, но тут при коннекте меня ждали конфликты имен и из этого ничего хорошего тоже не получилось.[/note]

Научиться программировать

  • на Delphi

  • на Java

  • на C++