c# - {“无效的列名'SessionStatus_Id'。”}。列“Id”以表名为前缀?
问题描述
我有以下模型类。程序使用EF V6.2.0
public partial class SessionStatus
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public SessionStatus()
{
Sessions = new HashSet<Session>();
}
[Key]
[Column("Id", TypeName ="TinyInt")] // No effect
public byte Id { get; set; } // Becomes SessionStatus_Id for DB operations
[Required]
[StringLength(10)]
public string Status { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Session> Sessions { get; set; }
}
和Session
类是
public partial class Session
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Session()
{
SessionMessages = new HashSet<SessionMessage>();
}
[Key]
public Guid Uid { get; set; }
// ......
public virtual SessionStatus SessionStatus { get; set; }
}
以及以下代码
using (var ctx = new ProcessContext())
{
ctx.Sessions.Add(new Session { Uid = guid, //...... });
ctx.SaveChanges();
}
得到的错误
{"无效的列名 'SessionStatus_Id'。"}
数据库表SessionStatus
的列名称为Id
(SessionStatus_Id
表列SessionStatus_Id
不存在)。为什么 EF 在列名前加上表名?连属性[Column("Id", TypeName ="TinyInt")]
都没用?
解决方案
尝试暂时更改名称而不是,Id
您将得到答案...
推荐阅读
- excel - How to count the nth consecutive instance of a word in a list in excel?
- python-3.x - since i switched to python 3, my flask page stopped displaying ASCII characters correctly
- java - Groovy read json-file, add new key : value and write back (Jenkins)
- python - Counting objects in specific positions on an image
- java - 如何使用 Angular + Spring + JSON 自定义登录/身份验证
- python - Passing a string to .loc accessor pandas
- shell - Specify desktop in which application should open from shell script
- vue.js - VSCode Syntax Highlighting not working with Vue / Vetur
- mysql - 备份 MySQL 数据库
- python - Docker setup for two apps