实体框架模型和MVC模型无法映射

时间:2016-11-04 16:30:25

标签: c# asp.net-mvc entity-framework

我有一个数据库优先的ASP.NET MVC应用程序和从数据库生成的实体模型,但我需要向模型添加一些未生成的东西。像这样正确显示日期:

code

所以我考虑在concept2文件夹中创建另一个模型,并复制与edmx完全相同的内容并添加我需要的内容。但这会产生问题,我无法将对象从 [DataType( DataType.Date )] [DisplayFormat( DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true )] 转换为Models,我该如何实现?

我已经尝试过自动播放器但是并没有真正起作用,我读过的文档是旧版本(v5之前版本),它有一些过时的功能。 这是我的实体型号代码:

EntityModels.Movie

实现目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您是否尝试使用[NotMapped]属性在相同的Movie模型(在Movies.EntityModels中)创建一个新的公共属性,即ReleaseDateFormatted。

答案 1 :(得分:1)

你可以手动编写一个mapper作为扩展方法,它非常简单。

public class Model()
{
    public string Test1 {get;set;}
    public string Test2 {get;set;}
    public string Test3 {get;set;}
}

public class Entity(){
    public string Test1 {get;set;}
    public string Test2 {get;set;}
    public string Test3 {get;set;}
}

现在您创建一个扩展方法,例如“ToModel”,将实体对象转换为您的模型:

public static class MyExtensions{
    public static Model ToModel(this Entity entity){
        var model = new Model()
        model.Test1 = entity.Test1;
        model.Test2 = entity.Test2;
        model.Test3 = entity.Test3;

        return model;
    }
}

和他们,无论你拥有实体对象,只需调用扩展方法:

public JsonResult test()
{
    var entity = new Entity()

    //{  Fill your entity properties from your dataset or something }

    var model = entity.ToModel();
}
相关问题