小编edg*_*kas的帖子

如何使用Fluent API使用Entity Framework Code First映射到查找表

我是asp.net mvc和实体框架代码的第一个apporach新手,我不是那么热衷于数据库.我提前为错误的术语或我理解事物的方式道歉.

现在回答这个问题.我有以下模型:
用户模型

 public class User
{
    public int UserId { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }

    public int RoleId { get; set; }

    [ForeignKey("RoleId")]
    public virtual IEnumerable<Role> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

榜样

 public class Role
{
    public int RoleId { get; set; }
    public string RoleName { get; set; }       
}
Run Code Online (Sandbox Code Playgroud)

我最终想要的是一种方法,使用Ef codefirst方法和流畅的API将UserId和RoleId映射到具有一对多关系的User_Role表,用户可以拥有多个角色: User_Role查找表

我假设在这个问题中所做的是正确的方法,除了作者使用多对多连接.我试过这种方式,但u => u.users的部分给了我一个错误(我假设这是因为模型中没有用户属性,所以他回答了他的问题,但没有更新他的问题?)

我的问题:让Ef为我生成这个表的确切流畅的api代码是什么?

我不确定的事情:(随意忽略)

  • 这是我的问题的正确方法吗?
  • 一旦我有了查找表,这仍然是声明我的导航属性的正确方法,以便我以后可以像user.Roles一样使用它并检索他们的角色吗?
  • 从Roles表或User_Role中填充User模型中的RoleId?
  • 在查找表中有ID有用吗? …

database fluent ef-code-first asp.net-mvc-4

10
推荐指数
1
解决办法
1万
查看次数

在运行时注入/管理使用实体框架,依赖注入,工作单元和存储库模式更改连接字符串

情况

我正在使用标题提到的技术构建一个Web应用程序.此应用程序类似于多个客户端的CMS系统.客户端必须使用其公司名称和登录凭据登录此系统.使用提供的公司名称,我连接到数据库(静态DbContext,每次都使用相同的连接字符串),其中存储所有客户端数据库信息并搜索此客户端特定数据库(每个客户端都有自己的完全相同的设计)登录信息.一切正常.现在这里是棘手的部分.要继续登录过程,我需要以某种方式使用其他DbContext注入或延迟加载存储库,其中连接字符串是从其他数据库的结果构建的.

是)我有的

2 DB内容从现有数据库生成,一个是静态的,一个是动态的.

那课.通用存储库类/接口

 public interface IRepository
{
    void Submit();
}

public interface IRepository<TEntity, TContext> : IRepository
    where TEntity : class
    where TContext : DbContext
{
     //crud stuff
}
 public abstract class GenericRepository<TEntity, TContext> : IRepository<TEntity, TContext>
    where TEntity : class
    where TContext : DbContext
{
    private TContext _dataContext;
    private IUnitOfWork _unitOfWork;
    private readonly IDbSet<TEntity> dbset;

    protected GenericRepository(IUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork;
        _unitOfWork.Register(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

工作单元/接口单元

 public interface IUnitOfWork
{
    void Register(IRepository repository);
    void Commit();
}
 public …
Run Code Online (Sandbox Code Playgroud)

entity-framework dependency-injection unit-of-work autofac repository-pattern

5
推荐指数
1
解决办法
1009
查看次数