vik*_*mjb 5 nhibernate asp.net-mvc asp.net-mvc-2
在过去的几天里,我一直在研究MVC应用程序。在此,我使用了几个下拉列表,并希望我做的是否是一个好的做法。我大约有5-6个下拉列表,这些下拉列表是从数据库中提取的。下拉菜单中有一个ID和描述字段。我能够使下拉列表中没有问题。但是,当我列出主表时就是出现性能问题。
所有的下拉列表选择都以整数形式存储在数据库中,因此我也具有与BaseModel(映射到HBM的类)相同的字段。当我列出数据库中的所有记录时,可以预见的是,记录中将得到一个整数。到目前为止,我还没有表现任何问题。
我想显示所选项目的描述,所以我为下拉菜单创建一个模型类,并在模型中有一个方法,该方法将与数据库对话并根据选择获得描述。问题是这正在减慢页面加载速度。我想知道是否需要进行设计更改以更快地加载它。以下是我的代码
MasterList1表(州和县是此表中的整数)状态下拉列表(主表具有所有州的ID)县下拉列表(主表具有所有县的ID)
Nhibernate的BaseModel类
MasterList1州县
型号类别
MasterList1Model StateModel县模型
存储库类MasterList1Repo国家Repo县Repo
查看MasterList1
在视图中,我正在BaseModel类中调用字符串属性。在该属性中,我要调用Model类,而后者又要调用Repo以获取字符串。这是Repo类中的方法。
public ApplicationTypeMaster GetByID(int ID)
{
using (ISession session = NHibernateHelper.OpenSession())
{
return session.Get<ApplicationTypeMaster>(ID);
}
}
public string GetApplicationTypeByID(int ID)
{
return GetByID(ID).ApplicationTypeDescription.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何改善这一点。有什么建议么 ?
你知道ViewModel方法吗?它是一个类,代表视图需要显示的内容。您可以使用您需要的这些属性创建一个 ViewModel 类,并使用该类键入您的视图,用 NHibernate 填充它,然后显示它,例如:
public class ApplicationTypeMasterViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string CityName { get; set; }
public string StateName { get; set; }
// other properties you need
public ApplicationTypeMasterViewModel() { }
}
Run Code Online (Sandbox Code Playgroud)
在你的服务层,尝试这样的事情:
public ApplicationTypeMasterViewModel GetByID(int ID)
{
using (ISession session = NHibernateHelper.OpenSession())
{
return session.Query<ApplicationTypeMaster>()
.Fetch(x => x.City).ThenFetch(c => c.State)
.Where(x => x.Id == ID)
.Select(x => new ApplicationTypeMasterViewModel() {
Id = x.Id,
Name = x.Name,
CityName = x.City.Name,
StateName = x.City.State.Name
// other properties you need
})
.FirstOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用列表或单个对象来完成此操作。
在控制器中,您调用此方法并将 ViewModel 传递给您的 View 并渲染它:
<p>
<label>Name: </labe>
<%: Model.Name %>
</p>
<p>
<label>City: </labe>
<%: Model.CityName %>
</p>
<p>
<label>State: </labe>
<%: Model.StateName %>
</p>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |