【发布时间】:2015-01-15 19:11:21
【问题描述】:
我有一个现有的数据库,我使用了 nuget 功能“数据库中的代码优先”
在大多数情况下,它似乎运作良好。但是,它并没有获取数据库拥有的所有关键关系。
我有一个名为 Sessions 的表和一个名为 Responses 的表。 Responses 表有一个 SessionId 字段。现在在旧的 EDMX 模型文件中,会话和响应之间存在 1:* 关系。这样我就可以通过foundSession.Responses 获取该会话的响应列表。
Code First From Database 没有创建 Session.Responses 关系。我在会话模型中添加了一个 ICollection。我怀疑我还需要在“OnModelCreating”方法中添加这种关系的设置方式。
我试图做类似的事情:
modelBuilder.Entity<Session>()
.HasMany(e => e.Responses)
.WithMany().Map(m => m.ToTable("Sessions").MapLeftKey("Id").MapRightKey("SessionId"));
但这没有用。它给了我一个错误:“无效的对象名称'dbo.Sessions1'。”
我试图用同样的方法将它从另一行作为基础:
modelBuilder.Entity<Role>()
.HasMany(e => e.Users)
.WithMany(e => e.Roles)
.Map(m => m.ToTable("RoleUser").MapLeftKey("Roles_Id").MapRightKey("Users_Id"));
但这是多对多的关系。我似乎没有看到任何 1:many。有可能吗?
【问题讨论】:
标签: c# database entity-framework ef-code-first entity-framework-migrations