EF6和预生成的视图

时间:2014-02-09 06:52:18

标签: c# entity-framework ef-code-first t4

我在我的项目中使用EF代码第一种方法。最近,我使用Package Manager Console将我的项目的EF版本更新为EF 6

我的所有实体都作为超类继承自BaseEntity类:

public abstract class BaseEntity
{
    public virtual int Id { get; set; }


    States _state;

    [NotMapped]
    public States State { get; set;}

    public enum States
    {
        Unchanged,
        Added,
        Modified,
        Deleted
    }
    ....  
}

而且我也没有在BaseEntity中添加DbContext,程序运行没有任何问题,但是因为我使用EF6 CodeFirst View Generation T4 Template for C# 为项目添加了预生成的视图,所以我生成的视图没有问题,但是当我运行我的项目时,我得到了以下错误:

  

当前模型不再匹配用于预生成映射视图的模型,如ViewsForBaseEntitySets786b989cf4a349108a38357765a23070.MappingHashValue属性所示。必须使用当前模型重新生成预生成的映射视图,或者如果应使用在运行时生成的映射视图,则必须将其删除。有关Entity Framework映射视图的更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=318050

知道问题在哪里吗?或者至少找到问题的方法是什么?

1 个答案:

答案 0 :(得分:3)

您很可能会遇到this错误。标题表明它已在EF 6.1.0 alpha中修复 - 您可以尝试此版本并确认吗?如果您仍然看到错误,可以在https://entityframework.codeplex.com/WorkItem/Create上创建错误吗?一定要附上你的模型 - 没有模型就很难修复这个bug。另一种方法是使用我的另一个项目 - 交互式EF视图生成。您可以找到更多详细信息herehere。该项目可在NuGet上获得。最后,您的模型真的那么大,您需要使用预先生成的视图吗? EF6中的视图生成已得到极大改进(6.1中将有更多改进),所以我很好奇你是否真的看到使用预生成视图时应用程序启动时间的显着改善。