如何使用自定义列名称,使用流畅的api创建另一个表的可选外键?

时间:2013-10-17 20:20:12

标签: c# sql entity-framework fluent-entity-framework

我正在使用Entity Framework 5,我正在编写我希望在现有数据库模式之上使用的代码优先模型。所以,我无法控制架构设计。

我有两个表,mattersusersusers表包含用户帐户 - 系统的实际用户。 matters表包含类似于预定约会的数据,或者具有这种性质的数据。

matters表在名为users的列中有manager的外键。这一栏只是说“嘿,这个users行指定了这个manager的{​​{1}}。”这是一个可选的密钥 - 这个问题不需要经理。

matter中记录的模型不需要映射回这些事项的属性。

我目前对映射的尝试如下:

users

有了这个,我试图说modelBuilder.Entity<Matter>().HasOptional(m => m.ProjectManager).WithRequired().Map(m => m.MapKey("project_manager")); 在模型的Matter属性上有一个可选的FK,并且要求用户存在,并且列中的列名称在{ {1}}表名为ProjectManager

这不起作用,并且生成的SQL不正确,但我无法弄清楚如何获得我正在寻找的东西。如果我要编写SQL,它看起来像这样

matters

1 个答案:

答案 0 :(得分:1)

我要做的是获取sql是以下内容。

modelBuilder.Entity<Matter>()
.HasOptional(m => m.ProjectManager)
.WithMany(u => u.Matters)
.HasForeinKey(k=>k.project_manager);

此代码应生成您要查找的sql语句。 有一个很好的工具可以生成代码第一个表和流畅的api配置,它是EntityFramework Reverse POCO Generator,这对我来说非常有帮助。