在mvc5应用程序中,我在文件夹“模型”中创建类:
public class Code
{
[Key]
public Guid Id { get; set; }
public string UserId { get; set; }
}并进行迁徙。
我还得到了类(上下文,自动生成):
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<Code> Codes { get; set; }
}在我的一个控制器中,我编写了方法:
using (var db = new ApplicationDbContext())
{
var manager =
new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
var user = manager.FindById(User.Identity.GetUserId());
Code codeD = new Code();
codeD.Id = Guid.NewGuid();
codeD.UserId = user.Id;
db.Codes.Add(codeD);
db.SaveChanges();
}但是每次我这么做的时候,db.Codes都有0条。

但是,在我保存的数据库更改中,我得到了以下项:

有谁知道这种现象的原因吗?我无法从数据库中找到项目,但我可以免费保存新项目。有人知道吗,怎么从我的数据库里得到所有的“密码”?
我使用了生成的mvc5项目,所以ApplicationUserDbContext自动生成。
致以亲切的问候。
发布于 2015-01-05 01:24:18
为未来的搜索者做准备:
在实体框架中看到查询结果之前,必须将视图具体化。EF从它的大多数方法返回IQueryable。IQueryable实际上是一种机制,它允许EF继续构建从数据库获取所需数据所需的sql。这就是为什么当您处于调试视图中时,它在查看Select [Columns] From [table] as Extent1时显示类似于DbSet的内容。还没有执行的只是SQL。当您实际尝试从集合访问属性或对象时,EF将向db发送查询并将结果具体化。
在大多数情况下,将结果具体化应该是一种自然现象。如果您需要一个用户列表,您应该调用ToList()方法来实现结果。如果您只想要一个记录,那么应该使用FirstOrDefault()方法来实现单个记录,如果没有发现,则使用null。
示例:
//Materializing a collection of users
public ActionResult Users()
{
//The DbContext has been initialized elsewhere
var users = _db.Users.Where(user => user.IsActive).ToList();
return View(users);
}
//Materializing a single record
public ActionResult User(int userId)
{
var user = _db.Users.FirstOrDefault(user => user.Id == userId && user.IsActive);
if (user == null) return HttpNotFound();
return View(user);
}需要注意的是,只有在请求时,EF才会加载实体,如果您处理上下文,然后尝试访问视图中的结果,则会导致问题。这将导致异常,因为没有上下文可以为您加载结果。
发布于 2016-05-24 18:20:09
您可能需要检查您的Web.config文件中是否有正确的连接字符串。当然,这是不同的,但是您应该有如下内容:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\;Initial Catalog=MyDatabaseName;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>https://stackoverflow.com/questions/27771467
复制相似问题