我有一个对象,有一个密钥存储为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或关于不是关键的值的问题.
我一直在查看许多类似的问题,但似乎没有任何效果。我已将以下内容添加到默认的 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) 这是我的问题.
我有两个类都继承了一个普通的类.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'.'
有没有一种简单的方法可以解决这个问题,还是只是不可能?谢谢