Код EF сначала не может сделать коммит на не сложном пустом объекте - PullRequest
0 голосов
/ 08 марта 2019

В настоящее время я использую код EF сначала с SQL Server.

Вот мой код:

public class Article
{
    public Article(string title, ValidPeriod published)
    {
        this.Title = title;
        this.Published = published;
    }

    public int Id { get; set; }   
    public string Title {get;set;}
    public ValidPeriod Published { get; set; }
}

public class ValidPeriod()
{
    public DateTime From { get; set; }
    public DateTime To { get; set; }
}

Я могу создать экземпляр класса Article, но когда я пытаюсь сохранить Статью с нулевым ValidPeriod, я получаю "Нулевое значение дляне обнуляемый член. "Как я могу решить эту проблему, т.е.как можно сохранить нулевой класс.Я не объявляю ValidPeriod как сложный объект.

1 Ответ

1 голос
/ 08 марта 2019

Одним из возможных решений является сначала определить первичный ключ Id для ValidPeriod объекта следующим образом:

public int Id { get; set; }

Затем добавление явного обнуляемого внешнего ключа к Article сущности (int? как обнуляемому int):

public int? ValidPeriodId { get; set; }

И, наконец, определение отношения для Article сущности, используя свободный API:

HasOptional(c => c.Published)
                .WithMany()
                .HasForeignKey(c => c.ValidPeriodId);
...