【发布时间】:2012-09-12 04:37:08
【问题描述】:
如果您使用过 ASP.NET MVC 4,您会注意到 Internet 应用程序的默认设置是使用 SimpleMembership 提供程序,这一切都很好,并且工作正常。
问题来自默认数据库生成,他们为UserProfile 定义了一个 POCO,如下所示:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
.. 然后像这样生成:
using (var context = new UsersContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
这很好用,数据库生成得很好并且没有问题。但是,如果我要像这样更改 POCO 并删除数据库:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string EmailAddress { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Country { get; set; }
public string CompanyName { get; set; }
}
仅生成前 2 列,UserId 和 EmailAddress。它在代码方面工作得很好(谈论登录/注册),但显然我的其他用户数据都没有被存储。
我在这里遗漏了什么吗?当然它应该基于整个UserProfile 对象生成数据库。
【问题讨论】:
-
看起来很奇怪。这是可重复的吗? IE。清理并重建一切,仔细检查结果。你在寻找正确的数据库吗?
-
@HenkHolterman 不幸的是,过去 2 天我一直在为此发疯,我什至尝试用它自己的名称来归属每一列,但它们根本不存在。更糟糕的是,
UserId和EmailAddress(或者我将它们重命名为) 都很好。 -
@HenkHolterman 还应该值得注意的是,我已经尝试在一个全新的项目上更改此表作为测试并且它具有相同的问题。我没有尝试过的是使用独立的实体框架来生成数据库,也许我接下来会这样做,但现在我宁愿与默认的 ASP.NET MVC4 结构保持一致..
-
好吧,那我就难住了,没时间亲自尝试。
-
@Persian。这与成员资格提供程序无关,而是与 Entity Framework 的数据库生成由于某种原因而出现问题有关。
标签: c# entity-framework asp.net-mvc-4