2016-09-18 1 views
2

Я довольно новичок в обоих случаях, поэтому извиняюсь, если ответ очевиден, но я, похоже, не могу найти ответы на это. SQL Server 2016 имеет свойство Description как для таблиц, так и для отдельных столбцов. В диаграмме Entity Framework 6 есть документация - Long Description и Documentation - Summary свойства для таблиц и отдельных столбцов.Может ли Entity Framework 6 импортировать таблицы и описания столбцов из SQL Server 2016

Я обновляю свои диаграммы EF из базы данных. Возможно ли, чтобы EF6 импортировал свойства описания SQL Server в те или иные из свойств документации EF6? Если да, то какие настройки я могу изменить?

Спасибо за любую помощь.

+0

Entity Framework будет подключаться к серверу SQL через поставщиков данных и в вашем случае SqlClient, и я считаю, что это будет работать – Monah

ответ

0

Используйте код сначала из базы данных с EF Обратный шаблон poco и настройте его, чтобы включить комментарии в сводный блок!

+0

Спасибо, Эрик, но, как было сказано, я m довольно новичок в этом. Я нашел генератор EF Reverse POCO на линии и вижу, что он имеет возможность включать комментарии. Я предполагаю, что мне нужно будет заменить код, созданный в настоящее время EF6 кодом, сгенерированным генератором EF Reverse POCO. Будучи немного новичком, я не уверен, будет ли это простым упражнением, например. измените имя DBcontext, но имена свойств для сгенерированных классов будут одинаковыми, поэтому не будет дальнейшей работы или будет много изменений. Цените свои мысли. – GInSydney

+0

Почему бы не попробовать? – ErikEJ

+0

Я начал попробовать, но обнаружил, что он создает документы на C#, тогда как я использую VB. Я понимаю, что могу сгенерировать документы в отдельном проекте C# и ссылаться на них из проекта VB, но это звучит немного сложнее, чем хотелось бы. Спасибо за вашу помощь. – GInSydney

0

Похоже, что проблема с инфраструктурой Entity связана с функцией Always Encrypted, которая поставляется с SQL-сервером 2016. Эта проблема появится в первом подходе кода.

На основе этого article

Entity Framework-не был разработан с самого начала работать с всегда шифруются особенностью SQL Server 2016. Тем не менее, много усилий пошли в создании работы функции максимально прозрачно с существующим кодом. В этой статье рассматриваются ограничения, которые вам необходимо обойти, и возможные проблемы, о которых вам следует знать, если вам нужно сделать приложение на основе Entity Framework 6 работы с базой данных, содержащей зашифрованные столбцы.

и автор предложил обходной путь во все проектировании подхода, моделей первого, код первого

Предложениях

  • Если вы хотите использовать базу данных с Entity Framework 6.1.3 без кошмары, которые ваш код будет работать или нет, вы можете установить режим совместимости для SQL Server 2014 для своей базы данных.
  • Убедитесь, что вы используете последние .NET framework, прямо сейчас 4.6.2, которые содержат улучшения на SqlClient для Always Encrypted.

Надеется, что это поможет вам

+0

Спасибо, Хади, но я использую первый подход данных без функции «Всегда зашифрован» в базе данных SQL, поэтому не уверен, что это anwer. – GInSydney

+0

, тогда вам легко сделать обратное проектирование (поиск из инструментов -> расширений и обновлений -> в онлайн-поиске положить 'EntityFramework Reverse Poco Generator' и использовать его для извлечения всех необходимых вам классов). Он будет работать с вами, поскольку, как я упоминал в комментариях к вашему вопросу, инфраструктура Entity использует ADO.NET для подключения к SQL-серверу. – Monah

0

Я считаю, что это не возможно в настоящее время с EF, но вы могли бы сделать что-то вроде этого, чтобы получить описание недвижимости:

column properties

SELECT value from fn_listextendedproperty( 
    'MS_Description', 
    'schema', 'dbo', 
    'table', 'Log', 
    'column', 'EventID') 

Результаты:

results

Пример кода:

public static class DbHelpers 
{ 
    public static string GetColumnDocumentation(string tableName, string columnName, SqlConnection connection) 
    { 
     using (SqlCommand command = new SqlCommand(@"SELECT [value] 
                 FROM fn_listextendedproperty (
                 'MS_Description', 
                 'schema', 'dbo', 
                 'table', @TableName, 
                 'column', @columnName)", connection)) 
       { 

        command.Parameters.AddWithValue("TableName", tableName); 
        command.Parameters.AddWithValue("ColumnName", columnName); 

        return command.ExecuteScalar() as String; 
     } 
    } 
} 
Смежные вопросы