【问题标题】:Unable to access model properties of database context - .net core (3.1)无法访问数据库上下文的模型属性 - .net core (3.1)
【发布时间】:2020-02-13 15:54:59
【问题描述】:

我是 .net core 的新手,目前陷入非常奇怪和不熟悉的境地。 让我逐步解释我的问题:

第 1 步 首先我创建了基本模型

    [Table("ApplicationUserRights", Schema = "Security")]
    public class ApplicationUserRight
    {
        public Guid RoleId { get; set; }
        public int MenuId { get; set; }
        public int ClaimId { get; set; }

        [ForeignKey("RoleId")]
        public virtual ICollection<ApplicationRole> ApplicationRoles { get; set; }

        [ForeignKey("MenuId")]
        public virtual ICollection<ApplicationMenu> ApplicationMenus { get; set; }

        [ForeignKey("ClaimId")]
        public virtual ICollection<ApplicationClaim> ApplicationClaims { get; set; }
    }

    [Table("ApplicationClaim", Schema = "Security")]
    public class ApplicationClaim
    {
        [Required]
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [MaxLength(100)]
        public string Claim { get; set; }
        public int EnumValue { get; set; }
    }


第 2 步
然后我创建了类似这样的数据库上下文。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid, 
        ApplicationUserClaim, ApplicationUserRole, ApplicationUserLogin, ApplicationRoleClaim, ApplicationUserToken>
    {
      public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
        ....

        public DbSet<ApplicationClaim> ApplicationClaims { get; set; }
        public DbSet<ApplicationUserRight> ApplicationUserRights { get; set; }

        ....
    }

第 3 步:
在 startup.cs 中注册了该数据库上下文。

services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DefaultConnection")));

services.AddDefaultIdentity<ApplicationUser>();

步骤:4
限定了数据库上下文将在其上工作的类。

...
services.AddScoped<IMiddlewareAuthorization, MiddlewareAuthorization>();
...

步骤:5 最后,当我尝试进行 linq 查询时,属性不会显示

public class MiddlewareAuthorization : IMiddlewareAuthorization
    {
        private readonly ApplicationDbContext db;
        public MiddlewareAuthorization(ApplicationDbContext context) 
        {
            db = context;
        }
        public IList<string> GetAuthorizedURLs()
        {
            var Urls = (from abc in db.ApplicationUserRights
                        join xyz in db.ApplicationClaims on abc.??? equals xyz.???);

            return new List<string>();
        }
    }

这让我非常沮丧,因为我无法弄清楚问题的真正原因。

【问题讨论】:

    标签: c# asp.net-core .net-core asp.net-core-mvc


    【解决方案1】:

    终于在浪费了一整天之后才注意到我忘记导入 System.Linq
    现在可以正常使用了。

    【讨论】:

      【解决方案2】:

      一切看起来都很好! 确定要导入所有 using 语句吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 2017-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        相关资源
        最近更新 更多