Java имеет пул строк, в котором Java управляет распределением памяти для объектов String. См. String Pools в Java
Когда вы проверяете (сравниваете) два объекта с помощью оператора ==
, он сравнивает равенство адресов в пуле строк. Если два объекта String имеют одинаковые адреса, то он возвращает true
, в противном случае false
. Но если вы хотите сравнить содержимое двух объектов String, вы должны переопределить метод equals
.
equals
- фактически метод класса Object, но он переопределяется в класс String и дается новое определение, которое сравнивает содержимое объекта.
Example:
stringObjectOne.equals(stringObjectTwo);
Но помните, что это относится к случаю String. Если вы хотите сравнить регистр без учета регистра, вы должны пойти для метода equalsIgnoreCase класса String.
Давайте посмотрим:
String one = "HELLO";
String two = "HELLO";
String three = new String("HELLO");
String four = "hello";
one == two; // TRUE
one == three; // FALSE
one == four; // FALSE
one.equals(two); // TRUE
one.equals(three); // TRUE
one.equals(four); // FALSE
one.equalsIgnoreCase(four); // TRUE
Проблема заключается в том, что ваша версия сущности путается с .NetFramework
и .NetCore
. Рамка целевых приложений - Asp.Net Core
. Поэтому вы должны установить пакет, связанный с Asp.net Core
. В вашем случае 'EntityFramework 6.2.0'
поддерживается .NETFramework,Version=v4.6.1'
не '.NETCoreApp,Version=v2.0'
. Поэтому используйте эту ниже версию инфраструктуры сущностей вместо вашей.
PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.0.1
В качестве альтернативы вы можете изменить целевую инфраструктуру на net461, как показано ниже.
<TargetFramework>net461</TargetFramework>
Изменяя целевую структуру на net461, вы можете использовать ядро .net и полные .net-структуры. Я думаю, что за этот период этот подход лучше. Поскольку EF Core до сих пор не имеет некоторых основных функций, таких как отношение многих к многим и некоторых других. Конечно, это зависит от ваших потребностей и ожиданий от инструмента ORM.