gpt4 book ai didi

c# - MVC5 DataContext 最佳实践?

转载 作者:行者123 更新时间:2023-11-30 16:59:40 28 4
gpt4 key购买 nike

在 MVC 5 中,模型文件夹中有一个新的身份类。所以假设我向用户添加了一些额外的字段,我会在类里面这样做

公共(public)类 ApplicationUser : IdentityUser

好的,到目前为止一切顺利。我运行 add-migration "updatedUser",这将更新数据库。

但是...现在我想添加一个产品、客户和公司表。现在,一些 ASP.NET 教程和 Azure 教程实际上让我为 ApplicationDbContext 类中的每个表设置 getter 和 setter:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}

public DbSet<Product> Products { get; set; }
public DbSet<Client> Clients { get; set; }
public DbSet<Company> Companies { get; set; }

public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}

但我认为您不希望从 IdentityDbContext 继承,而是在模型文件夹中设置一个名为:

DatabaseContext.cs(对于非用户/身份表)

然后做类似的事情:

    using MyProject.Domain.Entities;
using System.Data.Entity;
namespace MyProject.Models {

public class DatabaseContext : DbContext
: base("DefaultConnection")
{
}

public DbSet<Product> Products { get; set; }
public DbSet<Client> Clients { get; set; }
public DbSet<Company> Companies { get; set; }
}

这是最佳实践还是我应该使用标识类?重要吗?

最佳答案

为什么你认为你会想要这样做?

由于提供了 ApplicationDbContext,您不会继承您尚未执行的任何操作。

在某些情况下添加第二个上下文可能有意义,但您可能想要访问身份字段,如果您使用不同的上下文,那么您可能会遇到上下文一致性问题。

并且,仅供引用,您没有将 DbSet 放入 ApplicationDbContext 的构造函数中。

关于c# - MVC5 DataContext 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23485396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com