我正在使用 Entity Framework 5,并且我正在编写我希望在现有数据库模式之上使用的代码优先模型。所以,我无法控制架构设计。
我有两张桌子,matters和users。该users表包含用户帐户 - 系统的实际用户。该matters表包含类似于预定约会或类似性质的数据。
该表在名为 的列中matters具有指向 的外键。这一列只是说“嘿,这一行指定了这个。” 这是一个可选的键 - 事情不必有一个经理。usersmanagerusersmanagermatter
中的记录模型users不需要映射回这些事务的属性。
我当前的映射尝试如下所示:
modelBuilder.Entity<Matter>().HasOptional(m => m.ProjectManager).WithRequired().Map(m => m.MapKey("project_manager"));
有了这个,我想说Matter在模型的属性上有一个可选的 FK,ProjectManager并且用户必须存在,并且表中的列名matters被称为project_manager.
虽然这不起作用,并且生成的 SQL 不正确,但我无法弄清楚如何获得我正在寻找的东西。如果我要编写 SQL,它看起来像这样
SELECT matters.*, users.*
FROM matters
LEFT JOIN users ON matters.project_manager = users.id