实体框架映射到查找表

发布于 2024-12-13 02:02:20 字数 869 浏览 0 评论 0原文

我有 3 个表需要与实体框架进行映射,但我不确定执行此操作的正确方法。这是我的 3 个实体:

public class User
{
   [Key] 
   public int user_id {get; set;}
   public string user_name {get; set;}

   public virtual List<Role> roles {get; set;}
}

public class Role
{
   [Key] 
   public int role_id {get; set;}

   public string role_name {get; set;}
}

public class User_Role
{
   [Key] 
   public int user_role_id {get; set;}

   public int user_id {get; set;}
   public int role_id {get; set;}
}

请注意,User_Role 实体仅代表一个查找表,用于将多个角色链接到单个用户。

对于 SQL,我只会做类似的事情:

SELECT User.user_name, Role.role_name FROM User INNER JOIN User_Role ON User_Role.user_id = User.user_id INNER JOIN Role ON Role.role_id = User_Role.role_id WHERE User.user_id = 123

我对实体框架相对较新,所以我不确定使用 EF4 DbContext(可能还有 Fluent API?)解决此问题的最佳方法,但我希望它非常简单。

提前致谢。

I have 3 tables that need to be mapped with Entity Framework and I'm not sure the proper way to go about this. Here are my 3 entities:

public class User
{
   [Key] 
   public int user_id {get; set;}
   public string user_name {get; set;}

   public virtual List<Role> roles {get; set;}
}

public class Role
{
   [Key] 
   public int role_id {get; set;}

   public string role_name {get; set;}
}

public class User_Role
{
   [Key] 
   public int user_role_id {get; set;}

   public int user_id {get; set;}
   public int role_id {get; set;}
}

Please note that the User_Role entity just represents a lookup table to link many roles to a single user.

With SQL I would just do something like:

SELECT User.user_name, Role.role_name FROM User INNER JOIN User_Role ON User_Role.user_id = User.user_id INNER JOIN Role ON Role.role_id = User_Role.role_id WHERE User.user_id = 123

I am relatively new to Entity Framework so I'm not sure the best way to tackle this using EF4 DbContext (and possibly Fluent API?) but I'm hoping its pretty straight forward.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九公里浅绿 2024-12-20 02:02:20

事实证明,我需要使用 Fluent API 来映射多对多表(User_Role)。

     modelBuilder.Entity<Role>()
        .HasMany<User>(u => u.users)
        .WithMany(r => r.roles)
        .Map(m => 
           m.MapLeftKey("role_id")
           m.MapRightKey("user_id")
           m.ToTable("User_Role"));

It turns out I needed to use Fluent API to map a many to many table (User_Role).

     modelBuilder.Entity<Role>()
        .HasMany<User>(u => u.users)
        .WithMany(r => r.roles)
        .Map(m => 
           m.MapLeftKey("role_id")
           m.MapRightKey("user_id")
           m.ToTable("User_Role"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文