RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[entity-framework-core]

Martin Hope
Ildar
Asked: 2024-02-16 16:42:38 +0000 UTC

在方法中返回 EF Core 数据

  • 5

我想我正在用方轮重新发明轮子(也许有一个更优雅的解决方案)。我需要该方法来返回已跨多个表组合的所有对象的列表:

  public List<Address> GetAddress()
    {
        using (var db = new CrmDbContext())
        {
            var address = from a in db.Addresses
                          join City in db.Cities on a.CityId equals City.CityId
                          join Area in db.Areas on a.AreaId equals Area.AreaId
                          select a;
  
            List<Address> result = address.ToList();
            return result;
        }
    }

如果我这样输出:

foreach(var address in addressModel.GetAddress())
 {
     WriteLine(address.City.CityName);
 }

然后 Exxeption 对我来说崩溃了

System.NullReferenceException:“未将对象引用设置为对象的实例。”

我这样做很可能是徒劳的。但我想在一个单独的类中存储一个用于显示对象(例如地址)的方法,并通过该方法显示它。

entity-framework-core
  • 2 个回答
  • 35 Views
Martin Hope
r0ge
Asked: 2023-10-07 01:07:28 +0000 UTC

如何对模型(包括链接模型)的所有字段实现过滤 ASP.NET Web API EF

  • 5

需要将过滤附加到 Web API。我正在使用 ORM 实体框架。给定 2 个数据模型:用户和角色

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int Age { get; set; }
    
    public virtual List<Role>? Roles { get; set; }
}
public class Role
{
    public int Id { get; set; }
    public RoleName Name { get; set; }
    public int UserId { get; set; }
    public virtual User User { get; set; }
}

如何通过角色名称Role.Name实现过滤,我不太明白如何正确构造查询,所以我向有知识的人求助,也许你可以告诉我如何改进WebAPI中的过滤。这是当前的实现:

List<User> list=new List<User>();
        if(userParameter.nameFilter!=string.Empty)
        {
            list.AddRange(_appDbContext.Users.Where(x=>x.Name
            .Contains(userParameter.nameFilter)).ToList());
        }
        if(userParameter.minAgeFilter>0&&(userParameter.maxAgeFilter>0
            &&userParameter.maxAgeFilter>userParameter.minAgeFilter))
        {
            list = new List<User>(list.Where(x => x.Age >= userParameter.minAgeFilter
            && userParameter.maxAgeFilter <= x.Age)).ToList();
        }
        if(userParameter.emailFilter!=string.Empty)
        {
            list=new List<User>(list.Where(x => x.Name.Contains(userParameter.nameFilter)));
        }
        if(userParameter.roleNameFilter!=string.Empty)
        {
            foreach (var item in list)
            {
                _appDbContext.Entry(item).Collection(x => x.Roles).Load();
            }
            //вот тут не понимаю как отсортировать по ролям
        }
entity-framework-core
  • 1 个回答
  • 22 Views
Martin Hope
Maks
Asked: 2022-07-26 11:50:05 +0000 UTC

EF 核心。分层数据。不创建表

  • 1

不是第一个数据库,但是遇到了问题,看不懂。

模型:

public class TemplateWork
    {
        public int Id { get; set; }
        /// <summary>
        /// Родительский объект
        /// </summary>
        public int? ParentId { get; set; }
        public TemplateWork? Parent { get; set; }
        public string Name { get; set; } = string.Empty;

        public IEnumerable<TemplateWork> Stages { get; set; }

        public TemplateWork() => Stages = new List<TemplateWork>(); 
    }

型号配置:

public class TemplateWorkEFConfiguration : IEntityTypeConfiguration<TemplateWork>
{
    public void Configure(EntityTypeBuilder<TemplateWork> builder)
    {
        builder.ToTable("TemplateWorks");

        builder
            .HasOne(o => o.Parent)
            .WithMany(s => s.Stages)
            .HasForeignKey(k => k.ParentId)
            .OnDelete(DeleteBehavior.SetNull);            
    }

}

BD上下文

public class ApplicationDBContext : DbContext
    {
        public ApplicationDBContext()            
        {           
            Database.EnsureCreated();
        }

        public DbSet<AppUser> AppUsers { get; set; } = null!;
        public DbSet<TemplateWork> TemplateWorks { get; set; } = null!;

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
        {
            optionsBuilder.UseSqlServer("Server=.............");             
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.ApplyConfiguration(new TemplateWorkEFConfiguration());
        }
   }

未创建表。此外,当我包含公共 DbSet TemplateWorks 时,没有创建表,没有它一切正常。执行时不抛出异常。其他连接模型(2张桌子上的真相) - 解决。帮助我理解......

c# entity-framework-core
  • 1 个回答
  • 36 Views
Martin Hope
Денис
Asked: 2022-07-13 19:20:52 +0000 UTC

ASP.NET 核心 MVC。实现 IDataProtectionKeyContext 接口

  • 1

有一个数据上下文:

public class OurDbContext : DbContext, IOurDbContext, IDataProtectionKeyContext
{
    public DbSet<Employee> Employees { get; set; }
    
    public DbSet<Role> Roles { get; set; }
    
    public DbSet<DataProtectionKey> DataProtectionKeys { get; set; } = null!;
}

有一种方法可以实现向数据库发送数据:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateNewClient(Employee client, string TypeOfClient)
{
    var secstring = _protector.Protect(client.Password);

    Employee temp = new Employee
    {
        Name = client.Name,
        Password = secstring,
        RoleId = 1
    };
    await _mediatr.Send(new NewEmployee.NewEmployeeCommand(temp));
    return Redirect("~/");
}

没有任何东西进入数据库。

如果我们从上下文类中删除实现IDataProtectionKeyContext

public DbSet<DataProtectionKey> DataProtectionKeys { get; set; } = null!;

并缩短线路

builder.Services.AddDataProtection().PersistKeysToDbContext<OurDbContext>();

前

builder.Services.AddDataProtection();

然后数据以加密密码进入数据库。但在这种情况下,5 分钟后,尝试读取此密码将由于密钥过期而导致异常。

微软的帮助没有说明这一点:

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-6.0#persistkeystodbcontext

asp.net-core-mvc entity-framework-core
  • 1 个回答
  • 18 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5