我在MVC中使用实体框架。我有两个使用DBContext从SQL表填充的模型
public class Incident
{
public Guid IncidentKey { get; set; }
public int IncidentID { get; set; }
}
public class Request
{
public Guid RequestKey { get; set; }
public int RequestID { get; set; }
}
下面是我如何从SQL中提取数据
public class CallViewerDbContext : DbContext
{
public DbSet<Incident> Incident { get; set; }
public DbSet<Request> Request { get; set; }
}
public class SqlData : IIncident, IRequest
{
private readonly CallViewerDbContext db;
public SqlData(CallViewerDbContext db)
{
this.db = db;
}}
internal static void RegisterContainer(HttpConfiguration httpConfiguration)
{
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterApiControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<SqlData>()
.As<IIncident>()
.InstancePerRequest();
builder.RegisterType<SqlData>()
.As<IRequest>()
.InstancePerRequest();
builder.RegisterType<CallViewerDbContext>().InstancePerRequest();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
httpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
我正在尝试创建一个新模型,当我将其放置在新的Razor视图上时,它将使我能够对实体的两个实体进行计数。我目前可以使用以下方法获得一个。
IIncident db;
public HomeController(IIncident db)
{
this.db = db;
}
public ActionResult Index()
{
var model = db.IGetAll();
return View(model);
}
public IEnumerable<Incident> IGetAll()
{
return db.Incident;
}
我尝试制作新模型。
public class DataModel
{
public List<Incident> allIncidents { get; set; }
public List<Request> allRequests { get; set; }
}
我尝试将其添加到注册容器中
builder.RegisterType<SqlData>()
.As <IDataModel>()
.InstancePerRequest();
然后更新了Home控制器
IDataModel db;
public HomeController(IDataModel db)
{
this.db = db;
}
public ActionResult Index()
{
var model = db.MGetAll();
return View(model);
}
public IEnumerable<Incident> MGetAll()
{
return db.Incident;
}
我试图使用MGetAll方法返回数据以获取事件列表,然后我有了另一个对请求执行相同操作的方法。我试图先将单个计数返回到视图,然后在第二个中添加。
我现在收到以下堆栈跟踪错误
传递到字典中的模型项的类型为'System.Data.Entity.DbSet 1[CallViewerData.Models.Incident]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [CallViewerData.Models.DataModel]'。
任何帮助将不胜感激。
答案 0 :(得分:0)
类似的事情应该起作用:
@media only screen and (min-width: 300px) and (max-width:650px) {
#icon {
max-width:100%;
max-height:100%;
}
您认为
public ActionResult Index()
{
var model = PrepareViewModel();
return View(model);
}
private DataModel PrepareViewModel()
{
return new DataModel
{
allIncidents = db..., // Get Incidents
allRequests = db... // Get Requests
};
}
然后,您可以使用@model namespace.DataModel
和Model.allIncidents
访问它们。