我是EF的新手,在ETF6.0中try 通过代码优先的方法来完成我的第一步,现在我遇到了一个问题.

我有一处房产

[Key]
public string FooId { get; set; }

这是我的模型主键.

但如果我运行

PM> Update-Database

命令更新到数据库的挂起迁移时,我收到以下错误:

标识列"FooId"的数据类型必须为int,bigint,mall int, tinyint、DECIMAL或NUMERIC,小数位数为0,并约束为 不可为空.

如果我将模型中的PK更改为

[Key]
public int FooId { get; set; } 

一切正常.

但我需要的是字符串类型的PK,因为它在我的情况下绝对有意义.我知道有缺点,但对我来说这是必要的.

我在这里看到一个老帖子.

但是这似乎不能解决我的问题,或者我就是不明白.

我真的不能在SQL数据库上使用字符串作为PK吗?

或者有没有办法做到这一点?

推荐答案

这是在不启用身份自动增量的情况下创建PK的正确方式:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string FooId { get; set; }

Database相关问答推荐

我如何知道 DynamoDB 表分布在多少个分区上?

如何理解mysql explain 命令

PostgreSQL 参数化 Order By / Limit in table 函数

SQL Server 中的Is Identity列属性是什么意思?

MS Access:如何在 VBA 中压缩当前数据库

在一次 SQL 查询中更新多行的多列

在迁移中添加行

是否有任何用于 NoSQL 数据库架构迁移的工具?

从数据库行在 Golang 中创建map

Redis:数据库大小与内存的比率?

如何取消长时间运行的数据库操作?

A QuerySet 按聚合字段值

将 .csv 文件导入 Android 中的 Sqlite

对于 N:M 关系,在 MongoDB 中推荐的级联删除等效项是什么?

在 SQLite 表中使用文本作为主键不好?

试图在我的环境中设置 Postgres,但似乎无法获得 intidb 的权限

为什么 OODBMS 不像 RDBMS 那样普遍?

在具有所需 ForeignKey 引用的 Django (1.8) 应用程序之间移动模型

带数据库的Electron 应用程序

DBMS中数据模型和数据库模式的区别?