我正在使用Entity Framework 5,我正在编写我希望在现有数据库模式之上使用的代码优先模型。所以,我无法控制架构设计。
我有两个表,matters
和users
。 users
表包含用户帐户 - 系统的实际用户。 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
答案 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,这对我来说非常有帮助。