c# - Entity Framework 自动生成 GUID

标签 c# asp.net-mvc entity-framework

我是 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(),但出现以下错误:

Exception Details: System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'Id', table 'AutoSendConnection.dbo.EmailTemplates'; column does not allow nulls. INSERT fails.

我做错了什么?为什么 EF 不自动创建唯一的 GUID?

最佳答案

只需如下所示装饰 EmailTemplate 类中的 Id 字段,SQL Server 将在插入时自动生成值。

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid Id { get; set; }

您也可以删除您的 Mapper 类,因为它不再需要了。

关于c# - Entity Framework 自动生成 GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094711/

相关文章:

c# - Entity Framework 不将数据刷新到数据库

c# - ASP.net 同时连接到两个数据库?

c# - 物理或逻辑分离我的 dll?

javascript - MVC .NET 中的 Requirejs 加载竞赛问题

c# - 在 asp.net MVC4 的布局 View 中全局设置页脚中的应用程序版本

c# - 在没有 Entity Framework 和迁移的 ASP.NET Core MVC 应用程序中使用 ASP.NET Identity

c# - 如何使用 EF6 在 C# 模型中创建多列 "reference"索引(连接索引)

c# - RunWorkerAsync 完成时关闭BackgroundWorker

c# - 如何摆脱 Visual Studio 2010 中烦人的代码提示?

javascript - Jquery Unobtrusive 验证不适用于 View 模型列表中第一个之后的项目 - c# MVC 4