Закрыть
×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "flex"; // !!!!! block document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
Праздник весны и труда (1 мая)
Концерты, выставки ...
Концерты, выставки ...
Спектакль "Шинель"|||г. Минск 10 апреля, 12 мая 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Вокал, хореография, актерское мастерство
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
Высококачественное подсолнечное масло оптом от производителя
Объявление
Форум ...
Форум ...
обсуждение...
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
Entity Framework (EF5, EF6) для работы с базой данных на C#
Соглашения в Entity Framework
посмотрели
7977
раз
обновлено: 16 января 2019
В
Entity Framework
действуют соглашения по именованию таблиц, столбцов, преобразование типов.
Соглашение по преобразованию типов Базы данных в → C#. И преобразование типов C# в → Базу данных
Тип в
базе данных
SQL Server
преобра
зуется в
→
C#
тип
преобра
зуется в
→
Тип в
базе данных
SQL Server
bit
→
bool
→
bit
tinyint
→
byte
→
tinyint
smallint
→
short
→
smallint
int
→
int
→
int
real
→
float
→
real
float
→
double
→
float
numeric
decimal
money
→
decimal
→
decimal
date
datetime
datetime2
→
DateTime
→
datetime
nchar
ntext
char
nvarchar
text
varchar
→
string
→
nvarchar(MAX)
byte[]
→
varbinary(MAX)
enum
→
int
На заметку!
Чтобы создалась в базе данных был тип только
date
нужно описать
C#
класс так:
C#
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Data.Entity;
using
System.ComponentModel.DataAnnotations.Schema;
// подключаем распознование [...]
namespace
Plan.Models
{
public
class
Book
{
public
int
Id { get; set; }
[Column(TypeName=
"date"
)]
public
DateTime StartDate { get; set; }
public
string
Name { get; set; }
}
}
Может ли колонка в Базе данных содержать NULL значение ?
Первичный ключ
(колонка ID или id или ID)
по умолчанию в
Базе данных
имеет
NOT NULL
.
Колонки в базе данных
, созданные по C# классу из числовых типов и времени:
DateTime, bool, char, decimal, int, double, float
по умолчанию в
Базе данных
имеет
NOT NULL
.
Колонки в базе данных
, созданные по C# классу из
ссылочных типов (string, array, ...)
по умолчанию в
Базе данных
имеет
NULL
.
Колонки в базе данных
, созданные по C# классу из свойств с типом
Nullable
или тип?
по умолчанию в
Базе данных
имеет
NULL
.
Как сделать чтобы тип int мог иметь null в базе данных
Когда мы пишем
int
колонка
не может содержать NULL значение
C#
public
class
Task
{
public
int
Id { get; set; }
public
int
Price
{ get; set; }
}
Таблица в базе данных:
---------------------------------------
Когда мы пишем
int?
колонка
может содержать NULL значение
C#
public
class
Task
{
public
int
Id { get; set; }
public
int?
Price
{ get; set; }
}
Таблица в базе данных:
---------------------------------------
Это правило относится ко все простым типам:
bool
,
char
,
decimal
,
int
,
double
,
float
Внешний ключ (Foreign Key) и каскадное удаление
Внешний ключ (Foreign Key)
это связь с другой таблицей.
Чтобы образовать внешний ключ
нужно чтобы
Имя_свойства_в_нашем_классе
=
Имя_класса_связанной_таблицы + Имя_ключа_из_связанной_таблицы
Каскадное удаление
• Если внешний ключ определяется как
int?
то внешний ключ может иметь
null
значения и
нет каскадного удаления
.
• Если внешний ключ определяется как
int
то внешний ключ не может иметь
null
значения и
будет каскадное удаление
.
Пример1 (foreign key может быть null)
C#
public
class
UserContext
: DbContext
{
// MyConnection1 это соединение с базой данных описанное в файле web.config
public
UserContext() : base(
"MyConnection1"
)
{
}
public
DbSet<User> Users {get; set;}
public
DbSet<Task> Tasks { get; set; }
}
public
class
User
{
public
int
Id {get;set;}
public
string
Email {get; set;}
public
string
Password{get; set;}
}
public
class
Task
{
public
int
Id { get; set; }
public
int
Price { get; set; }
public
int? UserId { get; set; }
// определяем внешний ключ (int? значит может иметь null значение)
public
User User { get; set; }
// это тоже необходимо для внешнего ключа
}
На заметку!
Если внешний ключ определяется как
int?
то внешний ключ может иметь
null
значения и
нет каскадного удаления
.
В
MS Sql Server
база данных выглядит так:
Пример2 (foreign key не может быть null)
C#
public
class
UserContext
: DbContext
{
// MyConnection1 это соединение с базой данных описанное в файле web.config
public
UserContext() : base(
"MyConnection1"
)
{
}
public
DbSet<User> Users {get; set;}
public
DbSet<Task> Tasks { get; set; }
}
public
class
User
{
public
int
Id {get;set;}
public
string
Email {get; set;}
public
string
Password{get; set;}
}
public
class
Task
{
public
int
Id { get; set; }
public
int
Price { get; set; }
public
int
UserId { get; set; }
// определяем внешний ключ (int значит НЕ может иметь null значение)
public
User User { get; set; }
// это тоже необходимо для внешнего ключа
}
На заметку!
Если внешний ключ определяется как
int
то внешний ключ НЕ может иметь
null
значения и
будет каскадное удаление
.
В
MS Sql Server
база данных выглядит так:
Выбор названий для таблиц и столбцов
С помощью специального класса
PluralizationService
Entity Framework проводит сопоставление между именами классов моделей и именами таблиц. При этом таблицы получают по умолчанию в качестве названия множественное число в соответствии с правилами английского языка, например, класс User - таблица Users, класс Person - таблица People (но не Persons!).
Названия столбцов получают названия свойств модели.
Если нас не устраивают названия таблиц и столбцов по умолчанию, то мы можем переопределить данный механизм с помощью:
•
Дата аннотаций в [...]
•
Fluent API
.
← Предыдущая тема
Что такое Entity Framework?
Следующая тема →
Внешний ключ (Foreign Key) и каскадное удаление
Ваши Отзывы ... комментарии ...
Вашe имя
Ваш комментарий
(www ссылки может добавлять только залогиненный пользователь)
+ картинку
Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
Объявления
Объявления
•
Что такое Entity Framework?
Типы в Entity Framework
•
Соглашения по преобразование типов, наименованию таблиц в Entity Framework
•
Внешний ключ (Foreign Key) и каскадное удаление
•
DateTime & только Date & только Time в Entity Framework
Code First
•
Code First. Мы пишем C# класс. Entity Framework по нашему C# классу → создает и заполняет таблицу в базе данных
•
Auto Code First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Database First
•
Database First. Entity Framework из существующей таблицы в базе данных → создает C# класс
Model First
•
Model First. Мы создаем модель в Visual Studio. По модели Entity Framework → создает C# классы и Базу данных
Работа с данными
•
Перебор данных в Entity Framework
•
Добавление данных в Entity Framework
•
Изменение (редактирование) данных в Entity Framework
•
Удаление данных в Entity Framework
Инициализация и миграция базы данных
•
Инициализация базы данных в Entity Framework. DropCreateDatabaseAlways позволяет при каждом новом запуске заполнять базу данных заново
•
Выполнение миграции Базы Данных в Entity Framework (если уже кто-то раньше сделал cs файл миграции, а мне хочется обновить у себя на компютере базу данных я выполняю миграцию то есть вызываю EntityFramework\Update-Database)
•
Создание и выполнение миграции Базы Данных в Entity Framework (я поменял c# класс, потом вызываю EntityFramework\add-migration т.е. автоматически добавляется в проект cs файл с кодом миграции, потом вызываю EntityFramework\Update-Database т.е. выполняется файл миграции и меняется база данных)
SQL в Entity Framework
•
SQL команды в Entity Framework
Транзакции в Entity Framework
•
Управление транзакциями в Entity Framework
Дополнительные темы, вопросы
•
Что такое <connectionStrings> в .config файле для Entity Framework (EF5, EF6)
•
При вызове EntityFramework\Update-Database появляется ошибка "System.Data.SqlClient.SqlException (0x80131904). A network-related or instance-specific error occurred while establishing a connection to SQL Server."
•
При вызове EntityFramework\Update-Database появляется ошибка "Your startup project '...' doesn't reference Microsoft.EntityFrameworkCore.Design"
WWW сайты для изучения Entity Framework
•
Сайты для изучения Entity Framework
Ваши вопросы присылайте по почте:
info@dir.by