Как вы сначала создаете базу данных, используя код? - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь изучить Entity Framework.

Я хотел бы следовать примеру кода вначале.

Я перечитал все по следующей ссылке, но мне кажется, что онипропустил несколько шагов.

http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx

Я гуглил, как сделать пользователя для sql-express.Я создал файл с именем «EFLearn» с паролем «EFLearn». Я сделал то же самое с тем, как создать базу данных, и создал файл с именем «EFLearnDB»:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Я посмотрел, как выглядит строка подключения для Sql Express, и поместил ее в конфигурацию моего приложения.

Я создал свое решение и несколько классов для представления своих данных,вместе с моим контекстом следующим образом:

namespace EFLearning {
    class Program {
        static void Main(string[] args) {
            using (var manufacturingDbContext = new ManufacturingDbContext()) {
                var good = new Good() { Name = "Water" };

                manufacturingDbContext.Goods.Add(good);
                manufacturingDbContext.SaveChanges();
            }
        }
    }
}

namespace Domain {

    public class ManufacturingDbContext :DbContext {

        public DbSet<Good> Goods { get; set; }
        public DbSet<Manufacturer> Manufacturers { get; set; }

        public ManufacturingDbContext() : base("name=EFLearnConnectionString") {

        }
    }
}

namespace Domain
{
    public class Good
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public double BaseValue { get; set; }
    }
}

namespace Domain {
    public class Manufacturer {
        public int Id {get; set;}
        public ICollection<ManufacturingCapability> ManufacturingCapabilities { get; set; }
    }
}

namespace Domain {
    public class ManufacturingCapability {
        public int Id { get; set; }
        public ICollection<ManufacturingInput> Inputs { get; set; }
        public ICollection<ManufacturingOutput> Outputs { get; set; }
        public TimeSpan CycleTime { get; set; }
    }
}

namespace Domain {
    public class ManufacturingInput {

        public int Id { get; set; }
        public Good Good { get; set; }
        public uint Quantity { get; set; }
    }
}

namespace Domain {
    public class ManufacturingOutput {
        public int Id { get; set; }
        public Good Good { get; set; }
        public uint Quantity { get; set; }
    }
}

У меня есть следующий AppConfig:

  <?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=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </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>
  <connectionStrings>
    <add name="EFLearnConnectionString"
    connectionString="Server=localhost;Database=EFLearnDb;User Id=EFLearn;Password=EFLearn;"
    providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

Я запускаю программу и ожидаю создания таблиц.Однако вместо этого я получаю следующее исключение:

+       $exception  {"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"}    System.Data.SqlClient.SqlException

Что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Пожалуйста, попробуйте подключиться к экземпляру через SQL Server Management Studio с пользователем EFLearn и сообщите нам, может ли он подключиться к экземпляру.Если нет, сообщите нам об ошибке.

Не могли бы вы попробовать изменить имя сервера на имя хоста \ имя_экземпляра (CPISZ1-LT \ SQLEXPRESS) в строке подключения.

0 голосов
/ 27 декабря 2018

Для обеспечения работоспособности соединения необходимо выполнить несколько действий:

1) Необходимо указать имя экземпляра SQLEXPRESS в строке соединения.

2) Необходимо включить аутентификацию в смешанном режимена сервере, чтобы разрешить подключение учетных записей домена, отличных от Windows, к серверу.

...