Почему мой обнуляемый int не может быть нулевым?EF Core .NET CORE - PullRequest
0 голосов
/ 28 июня 2019

У меня есть 2 таблицы:

public partial class CHILD
{
    public string PID_CHILD { get; set; }    
    public int ID { get; set; }
    public int ID_CHILD { get; set; }
}

public partial class PARENT
{
    public string ID_PARENT { get; set; }
    public int? ID_CHILD { get; set; }
    public List<CHILD> Childs { get; set; }
}

В PARENT столбец ID_CHILD может быть пустым, но мне нужно отобразить их вместе в свободном API:

modelBuilder.Entity<PARENT>(entity =>
{
    entity.HasMany(a => a.Childs)
            .WithOne()
            .HasPrincipalKey(a => a.ID_CHILD)
            .HasForeignKey(b => b.ID_CHILD);
}

Но когда я делаю это, например:

var test = context.PARENT.ToList();

У меня есть эта ошибка:

An unhandled exception occurred while processing the request.
InvalidCastException: La colonne contient des données NULL (Column contain null data)
Oracle.ManagedDataAccess.Client.OracleDataReader.GetInt32(int i)

Что не так с моим кодом?

1 Ответ

1 голос
/ 28 июня 2019

Проверьте в своей базе данных, если вы разрешите пустые значения для этого столбца,

Вы пытаетесь создать класс много к одному и один к одному одновременно, попробуйте изменить ваши классы, например:

public partial class CHILD
{
    public string PID_CHILD { get; set; }    
    public int ID { get; set; }
    public int ID_PARENT { get; set; }

    [ForeignKey("ID_PARENT")]
    public PARENT Parent {get;set;}
}

public partial class PARENT
{
    public string ID_PARENT { get; set; }
    public List<CHILD> Childs { get; set; }
}

есть ошибка:

public partial class PARENT
{
    public string ID_PARENT { get; set; }
    public int? ID_CHILD { get; set; } (one to one)
    public List<CHILD> Childs { get; set; } (many to one)
}

Вам не нужно указывать ID_CHILD (родительский класс и родительскую таблицу), если вы хотите, чтобы многие к одному, вы уже сделали это в CHILDкласс, и я полагаю, в таблице, если вы хотите, чтобы один к одному должны быть похожи:

public partial class PARENT
{
    public string ID_PARENT { get; set; }
    public int? ID_CHILD { get; set; }
    public CHILD Child { get; set; }
}

https://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx

...