我是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表,用户可以拥有多个角色:
我假设在这个问题中所做的是正确的方法,除了作者使用多对多连接.我试过这种方式,但u => u.users的部分给了我一个错误(我假设这是因为模型中没有用户属性,所以他回答了他的问题,但没有更新他的问题?)
我的问题:让Ef为我生成这个表的确切流畅的api代码是什么?
我不确定的事情:(随意忽略)
情况
我正在使用标题提到的技术构建一个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