C# MVC3数据库实体不';无法按预期进行初始化
在仔细研究了这个奇怪问题的解决方案之后,我什么也没做。我几乎绝望了 我正在从事一个MVC3项目 我有一个DB上下文类,如下所示:C# MVC3数据库实体不';无法按预期进行初始化,c#,asp.net-mvc,entity-framework,asp.net-mvc-3,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 3,在仔细研究了这个奇怪问题的解决方案之后,我什么也没做。我几乎绝望了 我正在从事一个MVC3项目 我有一个DB上下文类,如下所示: //SpaceUpEntities.cs public class SpaceUpEntities: DbContext { public DbSet<User> Users { get; set; } public DbSet<Profile> Profiles { get; set; } public DbSet&l
//SpaceUpEntities.cs
public class SpaceUpEntities: DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Profile> Profiles { get; set; }
public DbSet<Venue> Venues { get; set; }
public DbSet<Room> Rooms { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Event> Events { get; set; }
public DbSet<Capacity> Capacities { get; set; }
public DbSet<VenueStatus> VenueStatuses { get; set; }
}
在使用(var entities=new SpaceUpEntities())之后,
实体应该已初始化,但我最终出现了此错误
错误消息:
功能评估已禁用,因为以前的功能评估失败
超时。必须继续执行才能重新启用函数
评估
起初,我认为这是与服务器的连接问题,因此我检查:
确保您使用的初始化策略与您试图实现的目标相匹配<代码>数据库.SetInitializer(…)代码> 在您的
应用程序启动
方法中使用下面的行,我相信您可能绕过了初始化
Database.SetInitializer<SpaceUpEntities>(null);
Database.SetInitializer(null);
以下是基于代码优先的数据库初始化策略中的一些选项,希望对您有所帮助:
有四种不同的数据库初始化策略:
您能确认您的表已经在数据库中创建,并且已经添加了数据种子吗?表已经创建。数据库中有示例数据。从屏幕截图上看不清楚错误是什么,但通过执行
Database.SetInitializer(null)代码>您正在关闭数据库初始化器。工具->选项调试取消选中“启用属性求值和其他隐式函数调用”那你看看有没有error@Zaki:在取消选中optionI have error之后,我仍然会收到相同的错误,甚至在我有机会对数据库进行任何更改之前。您正在寻找哪种初始化?如果您指的是DBContext,那么我相信我在Global.asax.cs上有它。否则,我不知道并且可能会使用一些指针,我的意思是,您实际上是在为数据库播种行,还是仅仅根据SpaceUpEntities datacontext对象创建表?使用LINQ,如果中间对象是延迟加载的,您不能总是以您可能期望的方式检查它们。您是否会引发实际异常,或者您只是在调试时检查对象?此时我会出现异常'var emailExisted=entities.Users.FirstOrDefault(I=>I.Email==user.Email);'然后我调试以查看这些错误消息。我用SetInitializer再次尝试了它,这次它工作了。我猜上次失败是因为我没有清理并重建项目,也许吧?我将进行几轮测试,看看它是否真的有效,然后标记你的答案。非常感谢你的帮助,克里斯
//SecurityRepository.cs
public RegisterFeedback Register(User user, Profile profile)
{
try
{
using (var entities = new SpaceUpEntities())
{
// Check existing email address
var emailExisted = entities.Users.FirstOrDefault(i => i.Email == user.Email);
//... So on
}
}
catch (Exception e)
{
Logger.Error(e);
return new RegisterFeedback(false, Messages.GeneralError);
}
}
Database.SetInitializer<SpaceUpEntities>(null);