实体框架,代码表之间的第一代关系

时间:2011-12-10 19:48:00

标签: sql-server asp.net-mvc entity-framework

我正在使用MVC和以下学习EF video 他们说那句话:

public ICollection<Chirp> Chirps { get; set; }

添加了两个模型之间的关系,但是在重新生成没有这一行的表之后查看表列和键时,到目前为止我看不出任何差异。我遗漏了一些东西,因为所有的教程都提到了这种关系。

public class User
{

    public int Id { get; set; }
    public String Name { get; set; }
    public ICollection<Chirp> Chirps { get; set; }
}

public class Chirp
{
    public int Id { get; set; }
    public string Message { get; set; }
    public User User { get; set; }
}

public class MyContext : DbContext
{
    public DbSet<Chirp> Chirps { get; set; }
    public DbSet<User> Users { get; set; }
}

换句话说,公共ICollection Chirps {get;组;告诉EF用db结构做什么? 谢谢!

2 个答案:

答案 0 :(得分:0)

这应该生成一个跟踪User to Chirps关系的附加表。在数据库中查找应包含两列User_ChirpsUserChirps的{​​{1}}或User_Id表格。另外,我刚注意到你的id属性使用Chirp_Id的小写i。我相信实体框架中的约定期望属性名称为id,大写为I.所以您可能也想尝试更改它。

答案 1 :(得分:0)

似乎差异是Chirps表的约束。没有公共ICollection Chirps {get;组; } 其:

ALTER TABLE [dbo].[Chirps]  WITH CHECK ADD  CONSTRAINT **[Chirp_User]** FOREIGN KEY([User_id])
REFERENCES [dbo].[Users] ([id]) 

与它同时:

ALTER TABLE [dbo].[Chirps]  WITH CHECK ADD  CONSTRAINT **[User_Chirps]** FOREIGN KEY([User_id])
REFERENCES [dbo].[Users] ([id]