Задать вопрос
@VitonZizu

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

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

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

Подскажите как правильней будет организовать поля в табице? Я так понимаю связь создается один к одному, но не возникнет ли у меня проблем при удалении из таблицы "Карточки"? Как сделать уникальное поле "НомерКарточки"? т.е. чтобы цифры там не повторялись. И обязательно ли поле Id? Как можно без него обойтись? Был бы очень признателен примеру подобного класса!
  • Вопрос задан
  • 4278 просмотров
Подписаться 3 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 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% случаев, когда вам нужна связь один ко одному, вы не правильно спроектировали бд.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы