This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос c# вопрос по EntityFramework.Core & Mysqlconnector

albert1

Новый участник
3 Янв 2025
20
1
5
Здарова всем. Кто-нибудь может мне разъяснить из ведающих сишарп разработку на рейдже, возможен ли вообще на платформе рейджа код-ферст подход по разработке базы с помощью энтитифреймворка? Какую версию дотнет фреймворка лучше юзать для разработки серверной части в целом? Я щас на 6.0, но когда компилирую и запускаю сервак, сыпет ошибками, в частности ошибки с майскьэль коннектором.
 
Реакции: enotit

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,427
239
100
Привет! Да, возможно использовать подход Code First с Entity Framework на платформе .NET Core и .NET 5+. Для серверной части при разработке на сегодняшний день рекомендуется использовать .NET 5 или .NET 6. Проверьте версию MySQL Connector и убедитесь, что она совместима с .NET 6.Также обратите внимание на точное описание ошибок для более глубокого понимания проблемы.
 

Dmitry_V

Гений
23 Июн 2023
2,399
397
131
28
  • Рекомендуется использовать .NET Framework 4.7.2 или 4.8 вместо .NET 6.0
  • RAGE MP серверная часть построена на .NET Framework, поэтому .NET Core/.NET 5+/6+ могут вызывать проблемы совместимости
  • Используйте Entity Framework 6.x (не Core)
Отвечал жпт
 

albert1

Новый участник
3 Янв 2025
20
1
5
подожду ответа тогда от кодеров, все же хочется услышать мнение людей, кто разбирается.
 

enotit

Высший разум
High developer
BackEnd developer
13 Ноя 2020
1,636
520
187
22
Смени заголовок плиз, с указанием библиотек, что желаешь поставить. А вообще, чем больше версия, тем лучше, не?

и, так какая разница насчет библы? Со стороны рейджа ограничений нет. А если ошибки, то поделись ошибкой, уж больно мне кажется не в версиях дело
 
Реакции: albert1

albert1

Новый участник
3 Янв 2025
20
1
5
The type initializer for 'MySqlConnector.MySqlConnectionStringOption' threw an exception.
Exception has been thrown by the target of an invocation.

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.TypeInitializationException: The type initializer for 'MySqlConnector.MySqlConnectionStringOption' threw an exception.
---> System.TypeLoadException: Could not load type 'System.StringComparer' from assembly 'System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
at static MySqlConnector.MySqlConnectionStringOption()
--- End of inner exception stack trace ---
at MySqlConnectionStringOption MySqlConnector.MySqlConnectionStringOption.GetOptionForKey(string key) in /_/src/MySqlConnector/MySqlConnectionStringBuilder.cs:line 940
at void MySqlConnector.MySqlConnectionStringBuilder.set_Item(string key, object value) in /_/src/MySqlConnector/MySqlConnectionStringBuilder.cs:line 820
at void System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(string value)
at new MySqlConnector.MySqlConnectionStringBuilder(string connectionString) in /_/src/MySqlConnector/MySqlConnectionStringBuilder.cs:line 30
at ServerVersion Microsoft.EntityFrameworkCore.ServerVersion.AutoDetect(string connectionString)
at EntityDbContext OneshorkServerSide.Database.DependencyInjection.CreateDbContext(string connectionString) in C:/Games/RAGEMP/server-files/dotnet/resources/Oneshork/OneshorkServerSide/Database/DependencyInjection.cs:line 16
at void OneshorkServerSide.Main.InitializeDatabase(EntityDbContext context) in C:/Games/RAGEMP/server-files/dotnet/resources/Oneshork/OneshorkServerSide/Oneshork.cs:line 29
at void OneshorkServerSide.Main.OnResourceStart() in C:/Games/RAGEMP/server-files/dotnet/resources/Oneshork/OneshorkServerSide/Oneshork.cs:line 15
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at GTANetworkInternals.ScriptingEngine.InvokeVoidMethod(String method, Object[] args)
at GTANetworkInternals.EventParser.Parse(Event _event, Object[] arguments)
at GTANetworkInternals.EventCollection.<>c__DisplayClass4_0.<ParseEx>b__1(EventParser x)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at GTANetworkInternals.EventCollection.ParseEx(Event _event, ScriptingEngine engine, Object[] arguments)
at GTANetworkInternals.EventHandler.ParseEx(Event _event, ScriptingEngine engine, Object[] arguments)
at GTANetworkInternals.GameServer.<>c.<StartResource>b__67_0(ScriptingEngine r)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at GTANetworkInternals.GameServer.StartResource(String resourceName, String parent)


connstr: Server=localhost;Database=oneshork_db;User=root;Password=root;Port=3306;
 

albert1

Новый участник
3 Янв 2025
20
1
5
думал ради интереса перепрыгнуть на постгрес, чтоб чекнуть проблема конкретно в майскьэльконнекторе чи не
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,941
1,678
211
28
Во-первых зависимые библиотеки должны лежать рядом с .dll мода, во-вторых их так же дополнительно можно закинуть в server-files/dotnet/runtimes/, потому как некоторые из ключевых системных библиотек там тоже находятся, которые могут конфликтовать с твоими, поэтому возможно таким образом ты заменишь какую-то библиотеку (в данном случае System.Runtime.dll), которая идёт по стандарту от рейджа и у тебя всё запустится. Не думаю, что есть какие-либо проблемы запуска EF в рейдже, рейдж никак не ограничивает (и на том спасибо).
 
Реакции: GGHOST

albert1

Новый участник
3 Янв 2025
20
1
5
а я все библиотеки из доннет рантайма в сервер файлах рейджа ебанул в папку с ддл моего мода. мб оно билдит и заменяет, ща еще раз перекопирую и проверю.
 

albert1

Новый участник
3 Янв 2025
20
1
5
А не. Не до конца понял твое сообщение. Что мне сейчас сделать? Билд проекта и все ддлки, которые выйдут в debug/net6.0/ляляля и кинуть их в server-files/dotnet/runtimes?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,941
1,678
211
28
Кинуть их в обе папки: те, которые рядом с модом и в dotnet/runtimes.
Но сам dll мода кидать в runtimes не нужно.
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,087
2,006
208
35
че то я не понел

энтитифреймворка


изначальный вопрос как будто бы в целом не связан с рейджом
еф накатывается без каких-либо проблем, даже для фреймворка 4.5.2 есть энтити
код фёрст с ефом вполне практикуется
.нет стоит офк использовать просто максимально возможный, на серверсайде в рейдже ты насколько я знаю можешь использовать любой
 
Последнее редактирование:

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,941
1,678
211
28

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,087
2,006
208
35
а ну наверное MySql.Data.EntityFrameworkCore тянет её за собой
хз, наверное
я че то так вышло что с ЕФ использовал мсскл всегда
а мускул примерно 0 раз

я че то думал что это две вообще тотально разные либы

ну крч я тебя спас и в благородство играть не буду: выполнишь для меня пару заданий — и мы в расчете
в целом выше всё - всё ещё справедливо

а ошибка твоя скорее всего из-за каких-то конфликтов библиотек
советов тут особо не дать как будто бы, кроме как всё не проапать до максимальных, почистить нугеты и вот это всё, если ты копируешь все дллки в рантайм
 

albert1

Новый участник
3 Янв 2025
20
1
5
теперь пошла такая херня:

Unable to load one or more of the requested types.
Could not load file or assembly 'System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Не удается найти указанный файл.

Exception message: Unable to load one or more of the requested types.
Could not load file or assembly 'System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Не удается найти указанный файл.
System.IO.FileNotFoundException: Could not load file or assembly 'System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Не удается найти указанный файл.
File name: 'System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,941
1,678
211
28
Очевидно, у тебя должен быть System.ComponentModel.dll, который ты должен закинуть в обе указанные выше папки.
 

albert1

Новый участник
3 Янв 2025
20
1
5
откуда мне его спиздить? он есть в дотнет рантайме, но когда я его копирую в папку с дллкой моего мода оно выбивает тоже самое.