Entity Framework К Удаленному Серверу (Строка Подключения)
Я установил EF версии 6.1.3 на все свои проекты. Затем я создал класс модели, класс контекста и установил базу данных MSSQL на своем локальном компьютере (больше я ничего не делал). Все работало просто идеально (каким-то образом он знал о моей локальной базе данных).
Класс модели:
public class Account
{
public int Id { get; set; }
public string Name{ get; set; }
}
Класс DataContext:
public class MyClassDataContext: DbContext
{
public DbSet<Account> Accounts{ get; set; }
}
Приложение.конфигурация:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Затем я попытался переместить его в удаленную базу данных, и он не работает. Я перепробовал все.
Что такое правильный подход, чтобы сделать работу?
Редактировать: Я попробовал эту строку подключения, и ничего не получилось. Приложение по-прежнему пытается подключиться к локальной базе данных.
<connectionStrings>
<add name="MyClassDataContext" connectionString="Data Source=MyRemoteServer;Initial Catalog=MyRemoteCatalog;Integrated Security=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
<configSections>
1 ответ:
Вам нужно либо убедиться, что строка соединений
Ниже представлено полнофункциональное консольное приложение, которое может продемонстрировать, как оно должно работать, а также конфигурационный файл. Это будет использовать наш локальный SQLServer установка, но не SQLExpress. Он также должен хорошо работать для любой удаленной базы данных. Обратите внимание, что в предыдущей конфигурации приложения, которую я опубликовал, я поместил раздел строки подключения в верхней части. Это неверно:name
является полным именем вашего контекста, либо создать явный конструктор по умолчанию для вашего контекста. Поскольку вы упомянули об этом в комментариях, ссылка, которую вы предоставили, не работает для вас, потому что вы используете code-first. ПопробуйтеЭту ссылку вместо этого.configSections
должен быть первым узлом.namespace TestApp { public class Account { public int Id { get; set; } public string Name { get; set; } } public class MyClassDataContext : DbContext { public DbSet<Account> Accounts { get; set; } } class Program { static void Main(string[] args) { using (var x = new MyClassDataContext()) { x.Accounts.Add(new Account { Name = "Drew" }); x.SaveChanges(); var y = x.Accounts; foreach (var s in y) { Console.WriteLine(s.Name); } } Console.ReadKey(); } } }
Файл конфигурации:
<configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <connectionStrings> <add name="ConsoleApplication4.MyClassDataContext" connectionString="Data Source=.;Initial Catalog=MyClass;Integrated Security=true" providerName="System.Data.SqlClient"/> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> </configuration>