enb*_*081 3 c# asp.net asp.net-mvc entity-framework
我正在开发一个MVC 4和Entity Framework的项目.
我用数据库中的自动生成的类创建了实体模型.但是,我希望模型中的类有不同的名称和方法.
例如,它已生成此类:
public partial class tbl_Templates
{
public tbl_Templates()
{
this.tbl_Template_Sections = new HashSet<tbl_Template_Sections>();
}
public int TemplateId { get; set; }
//...
}
Run Code Online (Sandbox Code Playgroud)
但我不想使用这个类,所以我在建模器中创建了自己的类:
public class Template : tbl_Templates
{
public Template()
: base()
{
}
// I'll add custom methods later
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何在控制器中使用这个?
我试过了:
List<Template> Templates =db.tbl_Templates.Cast<Template>().ToList();
Run Code Online (Sandbox Code Playgroud)
但我得到了例外:
LINQ to Entities仅支持转换EDM原语或枚举类型.
您需要Selecta Template并映射所有属性.像这样的东西
List<Template> Templates = db.tbl_Templates.Select(x => new Template {
.TemplateID = x.TemplateID
}).ToList();
Run Code Online (Sandbox Code Playgroud)
如果两种类型具有相同的属性名称,则可以使用AutoMapper自动执行此操作.他们有关于如何使用可查询扩展的文档.这是一个样本
Mapper.CreateMap<tbl_Templates, Template>();
List<Templates> Templates = db.tbl_Templates.Project().To<Template>().ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |