【发布时间】:2020-01-18 18:39:06
【问题描述】:
在 EF Core“数据库优先” 场景中,建议使用 Scaffold-DbContext 将 db 架构逆向工程为 C# 模型类。我已经尝试过了,发现当主键与 EFCore 使用的命名约定匹配时,不会生成它们的属性。例子:
示例 1:
CREATE TABLE item (
weirdId INT PRIMARY KEY IDENTITY,
);
将转换成这个类:
[Table("item")]
public class Item
{
[Key]
[Column("weirdId")]
public int WeirdId { get; set; }
}
示例2:(提示:[Key] 属性被忽略
CREATE TABLE item (
id INT PRIMARY KEY IDENTITY,
);
将转换成这个类:
[Table("item")]
public class Item
{
[Column("id")]
public int Id { get; set; }
}
我的问题是:
我的想法是否正确以及这种有计划的行为? 示例 2 中的
Id是否仍会被视为主键?如何停止? 如何显式添加主键[Key]属性?我很确定 EFCore 正在为 FK 做同样的事情,天知道还有什么。我喜欢命名约定,但讨厌魔术。我喜欢代码的一致性,所以如果我在一个实体中有 [Key],我希望它在所有实体中都以相同的方式。请告诉我 Scaffold-DbContext 中有一个更明确的开关?
编辑:
我不是说切换到-DataAnnotations。它仍然不起作用。如果满足模式(如示例 2),它仍然不会生成 Key。
【问题讨论】:
标签: c# sql-server .net-core entity-framework-core ef-core-2.1