Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   c# entity framework (https://forum.zone-game.info/showthread.php?t=42438)

Boris2105 05.08.2017 16:58

c# entity framework
 
Из-за чего может появиться такая ошибка?


https://pp.userapi.com/c639630/v6396...oQMxPDJl0M.jpg

Necroz-Team 05.08.2017 17:27

Re: c# entity framework
 
MySql.Data.dll присутствует?

PROGRAMMATOR 05.08.2017 17:38

Re: c# entity framework
 
Скорее всего отсутствует EntityFramework.SqlServer.

Я надеюсь, EF был установлен через NuGet?

Boris2105 05.08.2017 17:41

Re: c# entity framework
 
да через NuGet и все dll присутствуют

https://pp.userapi.com/c639630/v6396...AA5btEbyX8.jpg

Necroz-Team 05.08.2017 17:46

Re: c# entity framework
 
Цитата:

Сообщение от Boris2105 (Сообщение 427268)
да через NuGet и все dll присутствуют

https://pp.userapi.com/c639630/v6396...AA5btEbyX8.jpg

А с дата коннекторами как дела обстоят?
Попробуй поставить.
https://dev.mysql.com/downloads/connector/net/5.0.html

Boris2105 05.08.2017 17:51

Re: c# entity framework
 
установлено
ошибки в лаунчере в котором использую нету
а вот на сервере есть

Necroz-Team 05.08.2017 17:54

Re: c# entity framework
 
Цитата:

Сообщение от Boris2105 (Сообщение 427270)
установлено
ошибки в лаунчере в котором использую нету
а вот на сервере есть

Удостоверится все же стоит что в папке Debug-а, все библиотеки на месте)

Boris2105 05.08.2017 17:57

Re: c# entity framework
 
Цитата:

Сообщение от Necroz-Team (Сообщение 427271)
Удостоверится все же стоит что в папке Debug-а, все библиотеки на месте)

Все на месте

https://pp.userapi.com/c639630/v6396...Xz4V6c4Nd0.jpg

PROGRAMMATOR 05.08.2017 18:06

Re: c# entity framework
 
Конфиг для Login (не Core) описывает настройки EF?

Цитата:

Сообщение от Boris2105 (Сообщение 427272)
Все на месте

Той что я описал - нет.

Necroz-Team 05.08.2017 18:09

Re: c# entity framework
 
Цитата:

Сообщение от Boris2105 (Сообщение 427272)

А где EntityFramework.SqlServer.dll ?)
Поставщики указаны в конфиге?
Типо
Код:

<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>
  <connectionStrings>
    <add name="DelayDb" connectionString="server=localhost\SQLEXPRESS; Database=Delay; Trusted_Connection=True;" providerName="System.Data.SqlClient"/>
  </connectionStrings>


Boris2105 05.08.2017 18:24

Re: c# entity framework
 
Код:

<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" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
  </entityFramework>
  <connectionStrings>
    <add name="dbUserEF" connectionString="metadata=res://*/dbAccount.csdl|res://*/dbAccount.ssdl|res://*/dbAccount.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=Irbos;password=Kfkjxrf1997!;persistsecurityinfo=True;database=testef&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

я MySql использую

Добавлено через 5 минут
да не заметил отсутствие EntityFramework.SqlServer.dll

но вот теперь такая ошибка
Код:

[Error] Не удалось загрузить тип поставщика Entity Framework "MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d", зарегистрированный в файле конфигурации приложения для поставщика ADO.NET с неизменяемым именем "MySql.Data.MySqlClient". Проверьте, чтобы использовалось полное имя сборки и сборка была доступна в работающем приложении. Дополнительные сведения см. в разделе http://go.microsoft.com/fwlink/?LinkId=260882.

PROGRAMMATOR 05.08.2017 23:59

Re: c# entity framework
 
Для использования MySql у тебя не хватает библиотеки MySql.Data.Entity.EF6.dll.

Для подключения к БД достаточно указать:

<connectionStrings>
    <add name="DbConnectionString" connectionString="server=localhost;user id=root;password=secret;database=pbemu" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
 
Code: XML

И в контексте:

public YourContext() : base("DbConnectionString")
{
    // ...
}
Code: C#

Boris2105 27.08.2017 15:10

Re: c# entity framework
 
Чтобы я не делал эту ошибку так исправить и не вышло.

https://pp.userapi.com/c639331/v6393...hDejtgbRvY.jpg
App.config:
Свернуть ↑Развернуть ↓


AccountDB:
Свернуть ↑Развернуть ↓


AccountModel:
Свернуть ↑Развернуть ↓


AccountContext:
Свернуть ↑Развернуть ↓

jenkok 27.08.2017 16:49

Re: c# entity framework
 
Помогите пожалуйста кто может подсказать как сделать чтоб люди могли зайти ко мне на сервер с 2 ип адресов 10.1.174.133 и 10.204.8.164 через запятую в конфигах не получается прописать

Boris2105 28.08.2017 15:24

Re: c# entity framework
 
Может помочь кто ?

PROGRAMMATOR 28.08.2017 15:53

Re: c# entity framework
 
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
 
Code: XML

Или просто удали EF, сотри с конфига все упоминания о нём, и поставь с нуля через Nuget.

Ставится только MySql.Data.Entity. Зависимости оно само тянет.

Boris2105 28.08.2017 16:45

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427571)
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
 
Code: XML

Или просто удали EF, сотри с конфига все упоминания о нём, и поставь с нуля через Nuget.

Ставится только MySql.Data.Entity. Зависимости оно само тянет.


То что ты скинул у меня прописано .
Попробую удалить и заново поставить

Добавлено через 27 минут
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427571)
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
 
Code: XML

Или просто удали EF, сотри с конфига все упоминания о нём, и поставь с нуля через Nuget.

Ставится только MySql.Data.Entity. Зависимости оно само тянет.

Вот такое предупреждение и он не создает App.config
https://pp.userapi.com/c639331/v6393...7e-b14nJO0.jpg

PROGRAMMATOR 28.08.2017 18:26

Re: c# entity framework
 
Просто капец. FeelsAmazingMan

Ты уже на .NET Core пишешь? Ну так тогда эти пакеты работать не будут.

Boris2105 28.08.2017 18:37

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427574)
Просто капец. FeelsAmazingMan

Ты уже на .NET Core пишешь? Ну так тогда эти пакеты работать не будут.

Ну ты же сам сказал что надо на .net core переходить.
Вот и пытаюсь

PROGRAMMATOR 28.08.2017 18:49

Re: c# entity framework
 
Ну так тогда видимо и пакеты нужно под него ставить.

Microsoft.EntityFrameworkCore
MySql.Data.EntityFrameworkCore (у меня он не работал, а с обновой они не спешат) можно заменить Pomelo.EntityFrameworkCore.MySql если хочется именно MySql.
PostgreSQL работает без проблем Npgsql.EntityFrameworkCore.PostgreSQL

Necroz-Team 28.08.2017 18:50

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427576)
Ну так тогда видимо и пакеты нужно под него ставить.

Microsoft.EntityFrameworkCore
MySql.Data.EntityFrameworkCore (у меня он не работал, а с обновой они не спешат) можно заменить Pomelo.EntityFrameworkCore.MySql если хочется именно MySql.
PostgreSQL работает без проблем Npgsql.EntityFrameworkCore.PostgreSQL

Рановато на него переходить)) Или самому писать реализацию к множеству фреймворков)

PROGRAMMATOR 28.08.2017 19:00

Re: c# entity framework
 
Necroz-Team, да вторая версия уже вполне. В любом случае необходимые мне пакеты уже подтянуты к релизной 2.0. :)

Boris2105 28.08.2017 19:01

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427576)
Ну так тогда видимо и пакеты нужно под него ставить.

Microsoft.EntityFrameworkCore
MySql.Data.EntityFrameworkCore (у меня он не работал, а с обновой они не спешат) можно заменить Pomelo.EntityFrameworkCore.MySql если хочется именно MySql.
PostgreSQL работает без проблем Npgsql.EntityFrameworkCore.PostgreSQL

Microsoft.EntityFrameworkCore
Pomelo.EntityFrameworkCore.MySql

А использовать так же?
Ну я про Code-First или по другому?

PROGRAMMATOR 28.08.2017 19:08

Re: c# entity framework
 
Практически так же, с некоторыми нюансами (например нет ленивой загрузки связей).

https://metanit.com/sharp/entityframeworkcore/1.1.php

    public class MyContext : DbContext
    {
        public DbSet<User> Users { get; set; }
 
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySQL("Server=192.168.10.10;UserId=homestead;Password=secret;Database=pointblank;");
        }
    }
 
Code: C#

Для миграции с EF6 можешь ещё официальную документацию почитать https://docs.microsoft.com/en-us/ef/...ting/port-code

Necroz-Team 28.08.2017 19:45

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 427578)
Necroz-Team, да вторая версия уже вполне. В любом случае необходимые мне пакеты уже подтянуты к релизной 2.0. :)

Во второй асинк сокеты завезли?)

Boris2105 28.08.2017 20:04

Re: c# entity framework
 
Сделал все как в https://metanit.com/sharp/entityframeworkcore/1.1.php
Но у меня как всегда где то косяк.
https://pp.userapi.com/c639331/v6393...JQ6R4akRw4.jpg

PROGRAMMATOR 28.08.2017 21:08

Re: c# entity framework
 
Necroz-Team, я юзаю:

BeginAcceptTcpClient / BeginRead / BeginWrite (последние вернулись в 2.0) проблем не замечено.


Boris2105, просто копируй лог ошибки.

Обнови Pomelo.EntityFrameworkCore.MySql до 2.0.0-rtm-10058

Boris2105 28.12.2017 01:15

Re: c# entity framework
 
Пробую использовать EntityFranework Code-First . но столкнулся с ошибкой
Ошибка:
Свернуть ↑Развернуть ↓


Context:
Свернуть ↑Развернуть ↓

PROGRAMMATOR 28.12.2017 06:06

Re: c# entity framework
 
internal class AccountContext : DbContext
 
Code: C#

Или public, если нужен общий доступ.

Boris2105 28.12.2017 12:31

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 429456)
internal class AccountContext : DbContext
 
Code: C#

Или public, если нужен общий доступ.

попробовал и так, и так но ошибка осталась

PROGRAMMATOR 28.12.2017 12:59

Re: c# entity framework
 
MySql.Data.Entity версии 6.10+?

Boris2105 28.12.2017 13:03

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 429461)
MySql.Data.Entity версии 6.10+?

6.10.5

PROGRAMMATOR 28.12.2017 13:06

Re: c# entity framework
 
Попробуй понизить до 6.9.10 MySql.Data.Entity и MySQL Connector.

Boris2105 28.12.2017 13:31

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 429463)
Попробуй понизить до 6.9.10 MySql.Data.Entity и MySQL Connector.

Понизил, теперь такая ошибка.
Код:

[Error] Формат строки инициализации не соответствует спецификации, начиная с индекса 0.
  в System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
  в System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
  в System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
  в System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
  в MySql.Data.MySqlClient.MySqlConnectionStringBuilder..ctor(String connStr)
  в MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)
  в MySql.Data.MySqlClient.MySqlConnection..ctor(String connectionString)
  в MySql.Data.Entity.MySqlConnectionFactory.CreateConnection(String connectionString)
  в System.Data.Entity.Internal.LazyInternalConnection.Initialize()
  в System.Data.Entity.Internal.LazyInternalConnection.get_ProviderName()
  в System.Data.Entity.Internal.LazyInternalContext.get_ProviderName()
  в System.Data.Entity.Internal.DefaultModelCacheKeyFactory.Create(DbContext context)
  в System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
  в System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
  в System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
  в System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
  в System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
  в System.Linq.Queryable.First[TSource](IQueryable`1 source, Expression`1 predicate)
  в PiercingBlow.Core.Database.AccountDB.loadAccount(String Token) в D:\Development\PiercingBlow\Server\Testing\PiercingBlow\PiercingBlow.Core\Database\AccountDB.cs:строка 13
  в PiercingBlow.Login.Emu.Network.Recv.PROTOCOL_LOGIN_REQ.RunImpl() в D:\Development\PiercingBlow\Server\Testing\PiercingBlow\PiercingBlow.Login\Emu\Network\Recv\PROTOCOL_LOGIN_REQ.cs:строка 29
  в PiercingBlow.Core.Packet.ClientPacket.Init(Byte[] buffer) в D:\Development\PiercingBlow\Server\Testing\PiercingBlow\PiercingBlow.Core\Packet\ClientPacket.cs:строка 22
  в PiercingBlow.Login.Emu.Network.ClientConnection.BeginRead(IAsyncResult asyncResult) в D:\Development\PiercingBlow\Server\Testing\PiercingBlow\PiercingBlow.Login\Emu\Network\ClientConnection.cs:строка 64


PROGRAMMATOR 28.12.2017 13:52

Re: c# entity framework
 
Приведи строку подключения.

Boris2105 28.12.2017 13:55

Re: c# entity framework
 
Код:

  <connectionStrings>
    <add name="testdb" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;user id=Kirito;password=135635;database=testdb;persistsecurityinfo=True" />
  </connectionStrings>


PROGRAMMATOR 28.12.2017 14:05

Re: c# entity framework
 
Ну так вроде ничего необычного.

Давай содержимое всего файла.

Boris2105 28.12.2017 14:12

Re: c# entity framework
 
Вот


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit [url]http://go.microsoft.com/fwlink/?LinkID=237468[/url] -->
    <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.5.2" />
  </startup>
  <!--MySql Configuration for EF 6-->
  <connectionStrings>
    <add name="testdb" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;user id=Kirito;password=135635;database=testdb;persistsecurityinfo=True" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
  </entityFramework>
<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.10.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data></configuration>
 
Code: XML

PROGRAMMATOR 28.12.2017 14:34

Re: c# entity framework
 
Попробуй удалить дубль:

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
 
Code: XML

Boris2105 28.12.2017 14:39

Re: c# entity framework
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 429469)
Попробуй удалить дубль:

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
 
Code: XML

Тоже самое , ошибка с индексом 0


Текущее время: 14:48. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot