【问题标题】:EF6 and pre-generated viewsEF6 和预生成的视图
【发布时间】:2014-03-06 13:10:26
【问题描述】:

我在我的项目中使用 EF 代码优先方法。最近我使用包管理器控制台将我的项目的 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
    }
    ....  
}

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,Pawel,我尝试了 EF 6.1.0 Alpha,它可以正常工作。是的,我的应用程序很大(大约 500 个实体),在升级到 EF6 之前,我使用了 EF4.1,并且通过使用预生成的视图,我的程序启动时间大约是我不使用它的情况的一半,但是当我升级到 EF6.1.0 alpha 时,我的项目的启动时间没有任何明显的改善。
    • 我很高兴这个问题得到了解决。请继续关注 EF6.1 RTM。
    • 谢谢帕维尔。我在 EF6.1.2 中遇到了这个问题,其中 dbcontext 使用了一些继承。我可以在某个地方报告这个问题吗?或者你知道吗?
    • 我们在 EF6.1.2 中也遇到了这种情况。昨天晚上才开始,重新生成视图会产生与失败的现有版本完全相同的结果。
    • 是的,所以我们已经降级到 6.1.1,问题就消失了。我们正在使用 EF Power Tools Beta 4 来创建我们的视图,而 6.1.2 很可能已经过时.....(visualstudiogallery.msdn.microsoft.com/…)
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多