@VitonZizu

Как сделать связь один к одному Entity, CodeFirst, C#?

Ребят, подскажите пожалуйста как связь один к одному сделать в Code First . Entity 5.0
У меня есть таблица "Карточки", с полями: НомерКарточки и IdЗаписи.
И есть таблица "Записи" где есть IdЗаписи и ещё несколько чисто информативных полей, дата, время...

Так вот, когда выдается карточка в таблицу "Карточки" записывается НомерКарточки, допустим "1" и IdЗаписи допустим "21". Соответственно в таблицу "Записи" записывается IdЗаписи (21) и остальные информативные поля. Когда карточка возвращается, мы находим в поле НомерКарточки номер возвращенной карточки (1) и удаляем эту запись, при этом в таблице "Записи" всё остается.
Т.е. таблица "Карточки" должна быть такая, динамическая, я ее хотел без поля Id сделать, но на сколько я понял, в CodeFirst без поля ID не обойтись.

Подскажите как правильней будет организовать поля в табице? Я так понимаю связь создается один к одному, но не возникнет ли у меня проблем при удалении из таблицы "Карточки"? Как сделать уникальное поле "НомерКарточки"? т.е. чтобы цифры там не повторялись. И обязательно ли поле Id? Как можно без него обойтись? Был бы очень признателен примеру подобного класса!
  • Вопрос задан
  • 4274 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Gilga
public class Card
{
 public int CardId { set; get; }
 public Record Record { set; get; }
}

public class Record
{
 public int RecordId { set; get; }
}

Попробуйте изучать Fluent API для таких задач.
Например настройка каскадного удаления:
modelBuilder.Entity<Card>()
    .HasRequired(x => x.Record)
    .WithRequiredPrincipal()
    .WillCascadeOnDelete(false);
Ответ написан
wkololo_4ever
@wkololo_4ever
В 95% случаев, когда вам нужна связь один ко одному, вы не правильно спроектировали бд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bip.ru Москва
от 150 000 до 250 000 ₽
Альфа-Банк Москва
от 200 000 ₽
Bip.ru Москва
от 250 000 до 350 000 ₽