c# - 在 EF Core 中为一对一关系定义具有特定列名的实体
问题描述
我正在尝试在我的实体中使用代码优先定义一些列名。我正在使用 .NET Core 3.1、EF Core 3.1.15 和 MySQL 服务器。
我在与这种情况类似的实体之间有关系
我有一个City
属于一个State
。City
所以从到是一对一的关系State
。
这是一个例子
public class City
{
[Column("IdCity")]
public short IdCity { get; set; }
[Column("IdState")]
public State State { get; set; }
}
public class State
{
[Column("IdState")]
public byte IdState { get; set; }
}
问题是,如果我运行迁移然后持久化数据库更改,它会生成下表
表City
:
IdCity | StateIdState | ....
表State
:
IdState | ... | ...
我需要将该列StateIdState
定义为IdState
在物理数据库中。
我尝试使用不同的注释,如 FK、column 等,但它不起作用,它总是生成该名称。
有没有办法可以省略附加到列名第一部分的实体名称?
我这样做是因为我已经在服务器中创建了这两个表,所以我需要匹配它们的模式才能与它们交互。
解决方案
你有一个错误,添加 IdState 列并使用双引号
public class City {
[Column("IdCity")]
public short IdCity {get;set;}
[Column("IdState")]
public byte IdState {get;set;}
public virtual State State {get;set;}
....
但您不需要任何列属性,因为 EF 会自动给出相同的名称。仅当您希望列名与属性名不同时才需要它。
推荐阅读
- google-apps-script - 提取文件名(不包括文件扩展名)
- javascript - 如何在反应中将表单(不同用户)中的数据存储到数据库中
- java - 如何使用 Java CORBA 实现使用多个端口的分布式系统?
- python - ValueError:形状(10,36)和(35,)未对齐:36(dim 1)!= 35(dim 0)
- sql - 如何在 Postgres 中将 varchar 日期转换为日期类型?
- python - 如何检查一种类型是否符合另一种/类型提示
- reactjs - 反应:基于标志重定向:“重定向”标志应设置为真,但标志始终显示为假
- azure-functions - 如何在不定义特定订阅的情况下创建具有服务总线输出的 Java Azure 函数?
- mysql - 为什么这个 MySQL 空间查询返回错误行?
- c++ - 如何从未知视图声明 range::v3::View 变量