Как реализовать отношение один к одному, используя не primaryKey - PullRequest
0 голосов
/ 23 мая 2019

Это мой первый проект с entityFramework и LinQ, и я не могу разработать эту простую функцию.

Я хочу сделать простой inner join из двух таблиц:

public partial class DEGENZE_OSPITE
{

    [Key]
    public int ID_DEGENZA { get; set; }

    public int ID_OSPITE { get; set; }

    public int ID_TIPO_DEGENZA { get; set; }

    public int ID_TIPO_CAMERA { get; set; }

    public virtual ANAG_TIPO_DEGENZA ANAG_TIPO_DEGENZA { get; set; }

    public virtual ANAG_OSPITI ANAG_OSPITI { get; set; }

    public virtual ANAG_TIPO_CAMERA ANAG_TIPO_CAMERA { get; set; }

}


public partial class ANAG_TIPO_DEGENZA
{

    [Key]
    public int ID_TIPO_DEGENZA { get; set; }

    [Required]
    [StringLength(500)]
    public string DESCRIZIONE { get; set; }

    [Required]
    [StringLength(10)]
    public string INIZ_CAMPO_COSTI { get; set; }

    public virtual DEGENZE_OSPITE DEGENZE_OSPITE { get; set; }
}

но мой dbcontext.sql сгенерировал:

SELECT 
    [Project1].[ID_DEGENZA] AS [ID_DEGENZA], 
..
    FROM ( SELECT 
        [Extent1].[ID_DEGENZA] AS [ID_DEGENZA], 
..
        FROM   [AnagOspiti].[DEGENZE_OSPITE] AS [Extent1]
        LEFT OUTER JOIN [dbo].[ANAG_TIPO_CAMERA] AS [Extent2] ON [Extent1].[ID_DEGENZA] = [Extent2].[ID_TIPO_CAMERA]
        LEFT OUTER JOIN [AnagOspiti].[ANAG_TIPO_DEGENZA] AS [Extent3] ON [Extent1].[ID_DEGENZA] = [Extent3].[ID_TIPO_DEGENZA]
        WHERE [Extent1].[ID_OSPITE] = @p__linq__0
    )  AS [Project1]
    ORDER BY [Project1].[DATA_DAL] ASC

Ошибка в left outer join и здесь

LEFT OUTER JOIN [AnagOspiti].[ANAG_TIPO_DEGENZA] AS [Extent3] ON [Extent1].[***ID_DEGENZA***] = [Extent3].[***ID_TIPO_DEGENZA***]

Мне нужно будет

INNER JOIN [AnagOspiti].[ANAG_TIPO_DEGENZA] AS [Extent3] ON [Extent1].[ID_TIPO_DEGENZA] = [Extent3].[ID_TIPO_DEGENZA]

Где ошибка?Я должен использовать отношение 1 к N?Извините, я новый пользователь entityframework e LinQ.

...