[英]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.