簡體   English   中英

沒有外鍵的 EF Core 關系

[英]EF Core relation without foreign key

目前我有一個問題,我使用線性數據庫,即它沒有外鍵,表僅通過 id 字段關聯,您必須在數據庫中進行查詢以將表與連接連接並獲得結果,在 mysql 數據庫中,它運行良好,因為它們只是查詢,但是使用 Entity Framework 是問題出現的地方,我有一個員工表和一個人員表,它們由 PersonId 相關,因此使用 linq Z240AA2I want2029C56FABEEZ 查詢,獲取包含此人信息的員工列表,因此我會執行以下操作:

var empleados = context.Empleados.Include(x => x.Personas).ToList();

但由於它們在數據庫級別與外鍵無關,EF 不允許我使用包含。

然后嘗試這樣的事情:

  var queryable = from e in context.Empleados
    join p in context.Personas
    on e.Idpersona equals p.Idpersona
    select new { e, p };

但它是一種匿名類型,我不知道如何將其 map 到員工列表中,也嘗試這樣做:

var queryable = from e in context.Empleados
                            join p in context.Personas
                            on e.Idpersona equals p.Idpersona
                            select new Empleado
                            { Noemp = e.Noemp, 
                              Nombre = p.Nombre
                            };

但是員工沒有人員屬性,這給了我一個錯誤。

最后,我嘗試使用 dto,但我不想在包含解決問題時為我必須關聯的每個表執行 dto

List<Empleado> listadeempleados = new List<Empleado>();
var personas = await context.Personas.ToListAsync();

    foreach(var item in personas)
    {
        var empleado = await context.Empleados.Where(x => x.Idpersona == item.Idpersona).FirstOrDefaultAsync();
        listadeempleados.Add(empleado);
    }
        var model = new EmpleadoPersonaListDTO();
        model.ListaEmpleados = listadeempleados;
        model.ListaPersonas = personas;

我找不到如何使用與外鍵無關的實體框架和表,我知道我應該有鍵,但這就是數據庫的制作方式,我無法更改它

您不需要數據庫中的外鍵來在 EF 中聲明導航屬性。 只需創建 EF model 就好像外鍵在那里一樣。 當然,不要使用 Migrations 更新數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM