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

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

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

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

почитаю. спасибо.
...
Рейтинг: 0 / 0
11.09.2015, 23:46
    #39049775
AlexKuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Вместо 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
11.09.2015, 23:57
    #39049781
AlexKuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Здесь можно посмотреть общие принципы архитектуры сайта на 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
13.09.2015, 12:26
    #39050195
Артем G
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Я поступаю так.

Удаляю коннекшен из обоих конфигов. И создаю 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
13.09.2015, 12:28
    #39050196
Артем G
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Да и если сможете реализовать Section или реализовать это как-то подругому ... поделитесь пожалуйста.
...
Рейтинг: 0 / 0
13.09.2015, 14:33
    #39050248
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Артем G, что-то я не понял в чём смысл этих классов?
...
Рейтинг: 0 / 0
13.09.2015, 14:36
    #39050250
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Артем GДа и если сможете реализовать Section или реализовать это как-то подругому ... поделитесь пожалуйста.Что реализовать-то, какой функционал?
...
Рейтинг: 0 / 0
22.09.2015, 00:07
    #39057875
Артем G
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
skyANA,

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


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

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


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

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

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

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

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

Код: 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
27.09.2015, 16:01
    #39062450
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Артем GskyANAАртем G, рассмотрит ситуацию, когда есть локальный dev сервер, есть test сервер, есть prelive (stage) сервер и live (production) сервер.
На каждом из них свои параметры подключения. Будете постоянно лазить в код, менять значения и пересобирать под тот сервер, куда сейчас надо опубликовать версию?

Как вы указываете с каким сервером работать приложению?Где скриптами публикации, где просто трансформация конфигов.
...
Рейтинг: 0 / 0
27.09.2015, 16:12
    #39062454
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection string в mvc
Артем 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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Connection string в mvc / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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