Базовые различия между типами данных Entity Framework между SQLite и SQLServer - PullRequest
0 голосов
/ 05 октября 2018

У меня есть SQLite и SQL Express базы данных, каждая из которых имеет таблицу со столбцами, как показано ниже:

enter image description here

мой упрощенный объект выглядит следующим образом:

public class Customer
{
   public string BusinessIdentifier { get; set; }
}

, если вы заметили, что тип данных отличается для базы данных bigint против string в моей сущности, например.

Я использовал Fluent API для отображения, как показано ниже:

entity.Property(p => p.BusinessIdentifier).HasColumnName("CUSTOMER")

на SQLite , когда я использую options.UseSqlite(connectionString);, эта работа простохорошо.Однако для SQLite connectionString="Data Source=my_db.db"

при использовании SQL Server Express с использованием options.UseSqlServer(connectionString); возникают ошибки при несовпадении типов.

Я должен явно обработать это преобразование на Fluent API , как показано ниже:

entity.Property(p => p.BusinessIdentifier).HasColumnName("CUSTOMER").HasConversion(v => Convert.ToInt64(v), v => v.ToString());

SQL Server connectionString="Data Source=my_machine\SQLEXPRESS;Initial Catalog=my_db;Integrated Security=True;"

Вопрос :

Может кто-нибудь объяснить, почему это различие между двумя типами баз данных и действительно ли оно должно быть таким конкретным в каждом случае?

С уважениемКиран

1 Ответ

0 голосов
/ 05 октября 2018

SQLite не форсирует ограничения типа данных, он позволяет вам хранить значение, имеющее другой тип данных, так что это может быть причиной того, что ваш код хорошо работает с SQLite. С другой стороны, SQL Server заставляет васдолжны к тому же типу данных.

Вы можете обратиться к этому документу https://www.sqlite.org/datatype3.html.

...