Chad, Entity Framework, Sql Server, EF Core, Nuget
SQL SERVER DELETE - название топика
https://ask.chadgpt.ru/share/ca0f14c0-5b36-4f36-8762-0f4d76aff440
Nuget Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Project
D:\VC25\gs.trade.core\GS.EvlCoreWebApi01\Ca_DB_Model_Init_03\Ca_DB_Model_Init_03.csproj
Если в базе данных столбец ID — типа bigint, то в C# его
тип должен быть Int64 (или long), чтобы избежать переполнения или
ошибок при чтении/записи данных. Такой подход корректный и полностью
рабочий, как отмечается на Stack Overflow:
> "It's always safe to convert an int to Int64 so there is no information loss in this conversion."
> [Источник 2]
Если до этого у вас было int ID { get; set; }, это могло привести к ошибке, если в базе встречались значения больше int.MaxValue (2 147 483 647), так как bigint в SQL — это 64-битное число, соответствующее C# типу Int64 (long).
В итоге, если после вашей правки "все заработало" — это ожидаемо и правильно с точки зрения совместимости между C# и базой данных.
Примечание по типам:
- В C#,
Int64— это alias для типаlong(и наоборот). - Можно писать как
public long ID { get; set; }, это будет то же самое.
Оба типа, datetime и datetime2, используются в SQL Server для хранения даты и времени, но между ними есть отличия:
1. datetime2 — рекомендуемый выбор:
datetime2— более новый тип, обладает большей точностью (до 7 знаков после запятой) и может хранить более широкий диапазон дат: от 0001-01-01 до 9999-12-31.datetime— старый тип, точность до 3 миллисекунд, диапазон от 1753-01-01 до 9999-12-31.
2. Совместимость с C#:
В C# оба обычно связывают с типом DateTime.
3. Рекомендация Microsoft:
- Microsoft рекомендует использовать
datetime2для новых разработок потому что он более современный и гибкий (https://learn.microsoft.com/ru-ru/sql/t-sql/data-types/datetime2-transact-sql).
4. Пример:
В SQL:
Modified datetime2 NOT NULLВ C#:
public DateTime Modified { get; set; }или если допускается отсутствие значения:
public DateTime? Modified { get; set; }Выбирайте datetime2 — это лучший современный вариант.
В C# используйте DateTime (System.DateTime).
Комментариев нет:
Отправить комментарий