C# 是否可以在没有主键的表上使用实体框架核心和现有数据库?
我正在尝试将实体框架核心与现有数据库一起使用。这个数据库有几个表没有设置主键,因为如果设置了主键,其他进程(在我构建的应用程序范围之外)将中断 是否可以创建没有主键的表模型 我目前正在使用:C# 是否可以在没有主键的表上使用实体框架核心和现有数据库?,c#,sql-server,entity-framework-core,C#,Sql Server,Entity Framework Core,我正在尝试将实体框架核心与现有数据库一起使用。这个数据库有几个表没有设置主键,因为如果设置了主键,其他进程(在我构建的应用程序范围之外)将中断 是否可以创建没有主键的表模型 我目前正在使用: Microsoft.EntityFrameworkCore-版本2.0.1 Microsoft.EntityFrameworkCore.SqlServer-版本2.0.1 Microsoft.EntityFrameworkCore.SqlServer.Design-版本 Microsoft.EntityF
- Microsoft.EntityFrameworkCore-版本2.0.1
- Microsoft.EntityFrameworkCore.SqlServer-版本2.0.1
- Microsoft.EntityFrameworkCore.SqlServer.Design-版本
- Microsoft.EntityFrameworkCore.Tools-版本2.0.1
- Microsoft.EntityFrameworkCore.Tools.DotNet-版本2.0.0
“无法为表“…”生成实体类型。请查看警告消息。”
我正在运行的命令:
脚手架数据库上下文
“服务器=…myservernamehere…;数据库=…mydbnamehere…;可信连接=True;”
Microsoft.EntityFrameworkCore.SqlServer-OutputDir模型
如果没有主键,Scafford将无法工作。然而,有一个解决办法。至少在2.2.0中,我不能肯定这在旧版本中是否有效
- 在为数据库构建DBContext文件之后
- 至少有一列必须是唯一的数据
- 您需要为表创建一个模型类,其中包含您关心的所有列。 最好使用与表相同的名称和数据类型
- 创建您的数据库集
public virtual DbSet<Model of table> { get; set; }
HasKey
方法,指定一组列,这些列组合在一起将是唯一的。
modelBuilder.Entity<Model of table>(entity =>
{
entity.HasKey(e => e.{Unique column});
entity.ToTable("Table's Name");
}
)