powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Connection string в mvc
25 сообщений из 25, страница 1 из 1
Connection string в mvc
    #39048514
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сторонник database first при работы с EF.
Хочу написать учебный пример asp mvc. Во всех туториалах, которые я читал, используется подход code first.
Архитектура приложения из двух проектов: domain и webUI.
В domain-е модель edmx. В webUI ссылка на domain.
В domain-е в репозитарии идет работа с БД, соответственно тут и должны быть строка соединения (при генерации edmx строка соединения прописалась в App.config).
При компиляции ругается на отсутствии строки в Web.config.
Где (в каком проекте) должна быть строка соединения?
P.S надеюсь не криво выразился.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39048569
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sliva, в обоих. В domain для работы дизайнера EF. В webUI для приложения.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049040
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

Ну так конфликт коннекшенов же. Компилятор просит определиться.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049078
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sliva, при чем здесь компилятор? Я имею в виду хранение строки подключения в файле app.config до которого компилятору нет никакого дела. А ты что имеешь в виду?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049101
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

Ой, да, попутал. Ошибка в рантайме, была. Помудрив с файлами конфигурации - твой совет оказался верным. Спасибо.
Возник другой вопрос. Если у меня будет тестовый сервер, мне так же придется 2 файла поддерживать. Как бы централизовать строку соединения?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049321
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sliva, конфиг у тебя будет ровно один - web.config приложения. Врядли ты будешь менять строку подключения настолько часто что две строки соединения создадут проблему. Тем более что на этапе разработки и на этапе исполнения могут понадобиться разные строки.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049690
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile, Ок, ясно.
Еще ситуация. В модели есть внешние ключи. Как передать в представление модель и значение по внешнему ключу?
Создать такую модель (по сути одну из двух), заполнять в domain и передавать ее в представление? Или есть еще решения?
C ViewBag неудобно, + "склейка в представлении".
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049718
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivabazile, Ок, ясно.
Еще ситуация. В модели есть внешние ключи. Как передать в представление модель и значение по внешнему ключу?
Создать такую модель (по сути одну из двух), заполнять в domain и передавать ее в представление? Или есть еще решения?
C ViewBag неудобно, + "склейка в представлении".
Вопрос снят. Оказывается в представлении доступны навигационные свойства.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049764
AlexKuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гибче будет, если использовать POCO и CRUD модель между View и EF/Direct Database

EF маппишь на POCO через Automapper и отдаешь во View
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049773
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKuk,

почитаю. спасибо.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049775
AlexKuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вместо POCO я имею ввиду DTO ))) Сейчас запутаешься, наверно, сорри

Примерно так:

http://stackoverflow.com/questions/1051182/what-is-data-transfer-object


Command objects has validation JSR 303 annotations but model objects may not. So i use command object for create/update like operations.

For Create, Update like operations
View --(Command/Form)--> Controller --(Model)--> Service --(Model)--> Repository

For List, Show like Operations
Repository --(Model)--> Service --(Model)--> Controller --(DTO)--> View
...
Рейтинг: 0 / 0
Connection string в mvc
    #39049781
AlexKuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь можно посмотреть общие принципы архитектуры сайта на asp.net mvc

A demo web app for demonstrating ASP.NET MVC 4 and EF 5 Code First, and architectural practices.
http://efmvc.codeplex.com/

Здесь можно посмотреть принцип маппинга EF на DTO и наоборот

https://github.com/EgorBo/CrossChat-Xamarin.Forms
...
Рейтинг: 0 / 0
Connection string в mvc
    #39050195
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я поступаю так.

Удаляю коннекшен из обоих конфигов. И создаю 2 класса:

1ый DbConnectionHelper со статичной функцией ConnectionString() As String

2ой DbConfigurationHelper унаследованый от System.Data.Entity.DbConfiguration

Как их создать видно в самом конфиге.
Я покажу примеры но под рукой только на вб.


DbConnectionHelper

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Namespace Configuration

    Friend Class DbConnectionHelper

        Friend Shared Function ConnectionString() As String

            Dim sqlbuilder As New SqlClient.SqlConnectionStringBuilder

            sqlbuilder.DataSource = "Имя sql сервака"
            sqlbuilder.InitialCatalog = "Имя дата базы"

            sqlbuilder.UserID = "login"
            sqlbuilder.Password = "password"

            sqlbuilder.PersistSecurityInfo = True
            sqlbuilder.MultipleActiveResultSets = True
            sqlbuilder.ApplicationName = "EntityFramework"

            Return sqlbuilder.ConnectionString

        End Function

        Friend Shared Function ConnectionStringLocalDb() As String

            Dim sqlbuilder As New SqlClient.SqlConnectionStringBuilder

            sqlbuilder.DataSource = "(localdb)\ProjectsV12"
            sqlbuilder.InitialCatalog = "Имя дата базы"

            sqlbuilder.IntegratedSecurity = True
            sqlbuilder.ConnectTimeout = 30
            sqlbuilder.Encrypt = False
            sqlbuilder.TrustServerCertificate = False

            sqlbuilder.ApplicationIntent = SqlClient.ApplicationIntent.ReadWrite
            sqlbuilder.MultiSubnetFailover = False

            sqlbuilder.ApplicationName = "EntityFramework"

            Return sqlbuilder.ConnectionString

        End Function
    End Class

End Namespace




DbConfigurationHelper

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
PS. Смотрите конфиг. Я не смог реализовать Section но вроде работает и так ))
PS.S. Если у вас 2 и более базы данных в проекте то конфиг для них должен быть один (по моему так).

Public Class DbConfigurationHelper
    Inherits System.Data.Entity.DbConfiguration

    Friend Sub New()
        SetProviderServices(Entity.SqlServer.SqlProviderServices.ProviderInvariantName, Entity.SqlServer.SqlProviderServices.Instance)
        SetDefaultConnectionFactory(New Entity.Infrastructure.LocalDbConnectionFactory("mssqllocaldb"))
    End Sub




Вот так реализую

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
<DbConfigurationType(GetType(DbConfigurationHelper))>
Partial Public Class DbContextNameDatabase
    Inherits DbContext

    Public Sub New()
        MyBase.New(DbConnectionHelper.ConnectionString)
    End Sub

End Class
...
Рейтинг: 0 / 0
Connection string в mvc
    #39050196
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и если сможете реализовать Section или реализовать это как-то подругому ... поделитесь пожалуйста.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39050248
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G, что-то я не понял в чём смысл этих классов?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39050250
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GДа и если сможете реализовать Section или реализовать это как-то подругому ... поделитесь пожалуйста.Что реализовать-то, какой функционал?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39057875
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

посмотрите еще раз первый пост от автора. он хочет иметь строку подключения в domane проекте.


Смысл классов в том что когда создан dbcontext вашей базы данных в отдельном проекте (domane), то подключая этот проект к вашему основному проекту вам нужно перенести в app.config, web.config строку подключения итд...

Создав эти классы у вас строка подключения остается в проекте с классами.


Подключите Entity Framework и в app.config, web.config вы увидете Section. Его реализовать я не смог.
Но все вроде работает и без него. Так часто бывает ... когда что-то разберешь а потом находятся лишнии детали.
В этот раз у меня оказался лишним Section :) .
...
Рейтинг: 0 / 0
Connection string в mvc
    #39057994
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G, так я и не понял, что Вы сделали и зачем.

Захардкодили параметры подключения, потому как не смогли реализовать Section для работы с конфигурацией?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39057999
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G, рассмотрит ситуацию, когда есть локальный dev сервер, есть test сервер, есть prelive (stage) сервер и live (production) сервер.
На каждом из них свои параметры подключения. Будете постоянно лазить в код, менять значения и пересобирать под тот сервер, куда сейчас надо опубликовать версию?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39058071
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАртем G, рассмотрит ситуацию, когда есть локальный dev сервер, есть test сервер, есть prelive (stage) сервер и live (production) сервер.
На каждом из них свои параметры подключения. Будете постоянно лазить в код, менять значения и пересобирать под тот сервер, куда сейчас надо опубликовать версию?

а для хотфиксов стенд есть?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39058173
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAАртем G, рассмотрит ситуацию, когда есть локальный dev сервер, есть test сервер, есть prelive (stage) сервер и live (production) сервер.
На каждом из них свои параметры подключения. Будете постоянно лазить в код, менять значения и пересобирать под тот сервер, куда сейчас надо опубликовать версию?

а для хотфиксов стенд есть? Есть :) У нас стендов гораздо больше, чем я тут расписал.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39062394
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAАртем G, рассмотрит ситуацию, когда есть локальный dev сервер, есть test сервер, есть prelive (stage) сервер и live (production) сервер.
На каждом из них свои параметры подключения. Будете постоянно лазить в код, менять значения и пересобирать под тот сервер, куда сейчас надо опубликовать версию?

Как вы указываете с каким сервером работать приложению?
...
Рейтинг: 0 / 0
Connection string в mvc
    #39062400
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрите еще раз на код выше. В моем случае создается следующие методы

Код: vbnet
1.
2.
3.
4.
Friend Shared Function ConnectionStringDev() As String
Friend Shared Function ConnectionStringTest() As String
Friend Shared Function ConnectionStringPrelive() As String
Friend Shared Function ConnectionStringLive() As String



В зависимости от того какой конекшен мне нужен меняю в контексте

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
<DbConfigurationType(GetType(DbConfigurationHelper))>
Partial Public Class DbContextNameDatabase
    Inherits DbContext
    Public Sub New()
        MyBase.New(DbConnectionHelper.ConnectionStringLive)
    End Sub
End Class



Разница между Вашим и Моим подходом нет. Все равно вам нужно лезть в контекст и менять название коннекшена.

Смысл всего это - это не хранить строку подключения в приложении в app.config или web.config, а хранить ее в DLL где контекст.
Вроде бы логичнее ... контекст, модели, строка подключения в одном месте.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39062450
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GskyANAАртем G, рассмотрит ситуацию, когда есть локальный dev сервер, есть test сервер, есть prelive (stage) сервер и live (production) сервер.
На каждом из них свои параметры подключения. Будете постоянно лазить в код, менять значения и пересобирать под тот сервер, куда сейчас надо опубликовать версию?

Как вы указываете с каким сервером работать приложению?Где скриптами публикации, где просто трансформация конфигов.
...
Рейтинг: 0 / 0
Connection string в mvc
    #39062454
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GПосмотрите еще раз на код выше. В моем случае создается следующие методы

Код: vbnet
1.
2.
3.
4.
Friend Shared Function ConnectionStringDev() As String
Friend Shared Function ConnectionStringTest() As String
Friend Shared Function ConnectionStringPrelive() As String
Friend Shared Function ConnectionStringLive() As String



В зависимости от того какой конекшен мне нужен меняю в контекстеПлохое решение.

Артем G
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
<DbConfigurationType(GetType(DbConfigurationHelper))>
Partial Public Class DbContextNameDatabase
    Inherits DbContext
    Public Sub New()
        MyBase.New(DbConnectionHelper.ConnectionStringLive)
    End Sub
End Class



Разница между Вашим и Моим подходом нет. Все равно вам нужно лезть в контекст и менять название коннекшена.Не придумывайте. Нам никогда не нужно лезть в контекст в отличае от Вас.
Вообще у нас новые тестовые среды создают админы, они бы сразу в одно место послали, скажи им, что надо лазить в какой-то контекст, что-то там менять, пересобирать DLL :)

Артем GСмысл всего это - это не хранить строку подключения в приложении в app.config или web.config, а хранить ее в DLL где контекст.
Вроде бы логичнее ... контекст, модели, строка подключения в одном месте.Вообще не вижу логики, просто лично Вам так показалось удобнее. А по паттернам необходимо соблюдать persistence ignorance :)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Connection string в mvc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]