小编Sea*_*ean的帖子

自动增量非关键值实体框架核心2.0

我有一个对象,有一个密钥存储为GUID以及一个friendlyID,如下所示:

public class Job {

    [Key]
    public Guid Id { get; set; }

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int FriendlyId { get; set; }

    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用我的更新方法更新说明时:

    public void Update(Job job, Job jobParam) {
        if (job == null) {
            throw new AppException("Job does not exist");
        }

        //Update job properties
        job.Description = jobParam.Description;


        _context.Job.Update(job);
        _context.SaveChanges();
    }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说明:

System.Data.SqlClient.SqlException:无法更新标识列'FriendlyId'

我已经确保正确的对象正在尝试更新,但我无法理解为什么在没有更改时,friendlyID会尝试更新.在线查看时我可以看到EF核心1.1中存在一个导致此问题发生的错误,但没有关于2.0或关于不是关键的值的问题.

c# entity-framework entity-framework-core .net-core

6
推荐指数
1
解决办法
608
查看次数

JHipster 限制用户会话不适用于默认 JWT 配置

我一直在查看许多类似的问题,但似乎没有任何效果。我已将以下内容添加到默认的 Jhispter 安全配置中:

        http
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .maximumSessions(1).maxSessionsPreventsLogin(true).sessionRegistry(sessionRegistry());

    @Bean
    public SessionRegistry sessionRegistry() {
        SessionRegistry sessionRegistry = new SessionRegistryImpl();
        return sessionRegistry;
    }

    @Bean
    public HttpSessionEventPublisher httpSessionEventPublisher() {
        return new HttpSessionEventPublisher();
    }


Run Code Online (Sandbox Code Playgroud)

我知道 Spring Security 需要一个在下面添加的 HttpSessionListener,并且我看到了关于您是否需要添加 sessionRegistry 的相互矛盾的报告。

从我在 spring 文档中阅读的所有内容来看,这应该足以将每个用户的登录次数限制为 1,但是您仍然可以无限次登录。Jhispter 文档不会进入最大会话,因此也没有太大帮助。

这是整个安全配置:

package com.sean.silly.config;

import com.sean.silly.security.*;
import com.sean.silly.security.jwt.*;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.session.SessionRegistry;
import org.springframework.security.core.session.SessionRegistryImpl;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
import org.springframework.security.web.session.HttpSessionEventPublisher; …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot jhipster

3
推荐指数
1
解决办法
401
查看次数

C#使用foreach迭代包含2个不同对象类的列表

这是我的问题.

我有两个类都继承了一个普通的类.IE是一个汽车类和一个van类,它们都继承了车辆类.我将它们添加到了车型的通用列表中.汽车类具有noofseats属性,并且货车具有权重属性.有没有办法使用foreach循环迭代它们并根据它们是汽车类还是van类输出?

foreach (van v in vehiclelist)
{
  lsttest.Items.Add(v.weight;)
}

foreach (car c in vehiclelist)
{
  lsttest.Items.Add(c.nofoseats;)
}
Run Code Online (Sandbox Code Playgroud)

我得到一个错误:'无法将'Test.Car'类型的对象强制转换为'Test.Van'.'

有没有一种简单的方法可以解决这个问题,还是只是不可能?谢谢

c# foreach casting list

1
推荐指数
1
解决办法
1万
查看次数