У меня возникла проблема в Visual Studio 2013 при использовании объектной модели, созданной объектами CodeFluent Entities во ВРЕМЯ ПРОЕКТИРОВАНИЯ.
Это сторонний компонент отчетности, который обеспечивает привязку к источникам данных объектов POCO с дополнительными функциями доставки оперативных данных из возвращаемой коллекции объектов, предоставленных источником данных POCO. Затем он показывает хороший предварительный просмотр отчета с данными в Visual Studio 2013 в DESIGN TIME.
Я настроил отчет, указывающий на объектный источник данных, где тип возвращаемого значения — CodeFluent Entities «Namespace». «Entity» Тип коллекции (я просто использую функцию LoadAll, сгенерированную по умолчанию, и возвращаю ее вызов).
Что ж, тогда я могу заставить эту работу работать нормально. В ВРЕМЯ ПРОЕКТИРОВАНИЯ компонент отчетов в Visual Studio правильно вызывает метод LoadAll в спецификации и извлекает данные из уровня сохраняемости. Все это во ВРЕМЯ ПРОЕКТИРОВАНИЯ (ни один проект в моем решении VS никогда не запускается, чтобы запустить LoadAll и получить данные из базы данных), я не могу не подчеркнуть этого достаточно.
Здесь мне нужна твоя помощь. То, что я описал, работает при использовании SQL Server в качестве уровня сохраняемости, но НЕ при использовании MySql.
Поскольку все функциональные возможности, которые я здесь описываю, реализуются во время разработки VS, этот компонент отчета использует специальную конфигурацию для создания экземпляров классов .NET и запуска методов из объекта без запуска точки входа проекта. Поскольку проект никогда не запускается, он не запускает код инициализации для классов сущностей CodeFluent для правильного использования уровня сохраняемости. Затем я должен создать новый класс с новой функцией, в которой строка подключения в CodeFluent.Runtime.CodeFluentContext задается с нуля.
С практической точки зрения, это проблема:
У меня есть «специальный» класс с функцией, вызываемой его конструктором, которая служит источником данных объекта для компонента отчетности, например:
Public Class DuplicataLoadService
Public Function LoadByParams() As S5T.DuplicataCollection
Dim context As CodeFluentContext = CodeFluent.Runtime.CodeFluentContext.[Get](S5T.Constants.S5TStoreName)
context.Persistence.ConnectionString = "Data Source=MYCOMPUTER\SQLEXPRESS;Initial Catalog=duplicatas4t;User ID=user;Password=pwd"
LoadByParametros = S5T.DuplicataCollection.LoadAll
End Function
Public Sub New()
Me.LoadByParams()
End Sub
End Class
Я называю этот класс «особым», потому что он никогда не выполняется во время выполнения, запуская мой проект winforms. Я устанавливаю точки останова, они никогда не сбиваются. Этот класс используется только в Visual Studio DESIGN TIME.
Мой App.config настроен на использование сохраняемости SQL Server, например:
<configuration>
<configSections>
<section name="S5T" type="CodeFluent.Runtime.CodeFluentConfigurationSectionHandler, CodeFluent.Runtime" />
</configSections>
<S5T connectionString="Data Source=MYCOMPUTER\SQLEXPRESS;Initial Catalog=duplicatas4t;User ID=user;Password=pwd" />
</configuration>
В этом сценарии он работает нормально, но когда я перехожу на использование постоянства MySql, он больше не работает (пожалуйста, помогите).
** НЕ РАБОТАЕТ, генерируется общее исключение ***
Public Class DuplicataLoadService
Public Function LoadByParams() As S5T.DuplicataCollection
Dim context As CodeFluentContext = CodeFluent.Runtime.CodeFluentContext.[Get](S5T.Constants.S5TStoreName)
context.Persistence.ConnectionString = "Database=duplicatas4t;Server=localhost;Password=manager;User ID=root;pooling=true;"
LoadByParametros = S5T.DuplicataCollection.LoadAll
End Function
Public Sub New()
Me.LoadByParams()
End Sub
End Class
Мой App.config настроен на использование постоянства MySql, например:
<configuration>
<configSections>
<section name="S5T" type="CodeFluent.Runtime.CodeFluentConfigurationSectionHandler, CodeFluent.Runtime" />
</configSections>
<S5T persistenceTypeName="MySQL"
connectionString="Database=duplicatas4t;Server=localhost;Password=pwd;User ID=user;pooling=true;"
mysql-useSchemas="true" />
</configuration>
В обоих этих случаях я упомянул app.config только в качестве ИЛЛЮСТРАЦИИ, потому что содержимое app.config настраивается и извлекается во время выполнения, когда запускается выполнение проекта. Это не тот случай, я использовал содержимое app.config только в качестве модели, чтобы знать, что должно быть установлено программно для функциональности времени разработки для использования слоя сохраняемости для работы.
Я подозреваю, что мне придется программно добавить дополнительную конфигурацию, когда это MySql.
Поскольку SQL Server используется по умолчанию для объектов CodeFluent, когда в app.config есть только:
<S5T connectionString......
Это работает, у меня есть соответствующий код для программной установки строки подключения, например:
context.Persistence.ConnectionString = ....
Когда это MySql, в app.config присутствуют дополнительные атрибуты, помимо connectionString, например:
<S5T persistenceTypeName="MySQL"....... mysql-useSchemas="true" />
Мой код инициализации состоит только из context.Persistence.ConnectionString = .... недостаточно.... Имеет ли это смысл?
Как я могу программно инициализировать атрибуты persistenceTypeName и mysql-useSchemas?
В качестве последнего замечания, оба случая, использующие SQL Server и MySql, нормально работают во время выполнения, что указывает на то, что у меня нет базовой ошибки конфигурации при настройке проекта app.config, производителей постоянства и т. д....
Заранее спасибо,
Ренато