【发布时间】:2014-08-02 11:51:51
【问题描述】:
我是 EF 的新手,所以就到这里。我有一个包含以下内容的类
public class EmailTemplate
{
public Guid Id { get; set; }
[MaxLength(2000)]
public string Html { get; set; }
}
这是我的映射类
class EmailMapper : EntityTypeConfiguration<EmailTemplate>
{
public EmailMapper()
{
ToTable("EmailTemplate");
HasKey(c => c.Id);
Property(c => c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(c => c.Id).IsRequired();
}
}
我正在尝试拨打DbContext.SaveChanges(),但收到以下错误:
异常详细信息:System.Data.SqlClient.SqlException:无法将值 NULL 插入“Id”列、表“AutoSendConnection.dbo.EmailTemplates”;列不允许空值。插入失败。
我做错了什么?为什么 EF 不会自动创建唯一的 GUID?
【问题讨论】:
-
您可以通过 fluent api 设置列的默认值或手动修改或创建迁移 :) 对于 SQL Server,只需使用
newid()或newsequentialid()作为默认值 ????在 PostgreSQL 中你有很多不同的选择,但uuid_generate_v1()基本上应该可以解决问题。不幸的是,我相信在 MySQL 和 SQLite 中没有简单的解决方案。
标签: c# asp.net-mvc entity-framework