Я пытаюсь реализовать базовый пример Entity Framework, используя подход Code First , с внешней базой данных. Я просто хочу прочитать некоторые уже существующие данные из таблицы в моей базе данных. Способ, которым я реализовал это работает, в том смысле, что он показывает правильный вывод, но он генерирует кучу исключений во время процесса. Я нашел строку кода, во время которой генерируются исключения, но я не могу их перехватить, используя try / catch (см. Code).
Вот дамп экрана журнала вывода (отладка), когда я запускаю программу (я выделил окончательный вывод розовым цветом):
А вот снимок экрана таблицы, к которой я подключаюсь:
Даже если выходные данные верны, ошибки, похоже, влияют на производительность. Выполнение кода занимает где-то 2-3 секунды, хотя таблица содержит только шесть столбцов и три строки.
Что я сделал не так, чтобы заставить его так себя вести?
CODE
Функция, которая использует EF-соединение:
public PrintFirstEmployeeName()
{
try
{
UniContext db = new UniContext();
// Exceptions are thrown during this line of code:
string fullName = db.Employees.FirstOrDefault().first_name
+ " " + db.Employees.FirstOrDefault().last_name;
Debug.WriteLine($"Hello { fullName }!");
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
Модель сотрудника (имена совпадают с именами базы данных 1: 1):
[Table("dbo.sandbox_employee")]
public class EmployeeModel
{
[Key]
public int employee_id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public int age { get; set; }
public int company_id { get; set; }
}
Реализация dbContext
:
public class UniContext : DbContext
{
public UniContext() : base("Name=MyConnString") { }
public DbSet<EmployeeModel> Employees { get; set; }
}
И, наконец, файл App.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=xxx" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="MyConnString" connectionString="Integrated Security = SSPI; Persist Security Info = False; Data Source = MyServer; Database = MyDatabase" providerName="System.Data.SqlClient"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlClient" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
ОШИБКА
Насколько я могу судить, есть 3 разных ошибки. Все они брошены несколько раз ...
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.dll
Exception thrown: 'System.Data.Entity.Core.EntityCommandExecutionException' in EntityFramework.dll
Exception thrown: 'System.Data.Entity.Core.EntityCommandExecutionException' in EntityFramework.SqlServer.dll