【发布时间】:2014-05-21 11:48:39
【问题描述】:
我有以下 EF 代码优先实体及其对应的配置:
public class Category
{
public virtual long Id { get; set; }
public Guid Guid { get; set; }
public string Name { get; set; }
}
public class CategoryConfiguration:
EntityTypeConfiguration<Category>
{
public CategoryConfiguration ()
{
this.HasKey(entity => entity.Id);
this.Property(entity => entity.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Property(entity => entity.Guid).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
在字段Guid 上设置DatabaseGeneratedOption.Identity 选项似乎没有效果,SQL Server 中的相应表禁用了IDENTITY 选项。
有没有办法让 EF 中的 GUID/UNIQUEIDENTIFIER 列自动生成但同时又不是主键的一部分?
【问题讨论】:
-
IDENTITY仅适用于数字数据类型(int、decimal,逗号后有 0 个数字)。它不能应用于uniqueidentifier -
你不能在实体的构造函数中做
Guid.NewGuid()吗?当您创建一个全新的时,它会将 guid 设置为新的东西。当您加载现有实体时,它会将值设置为数据库中的任何内容。
标签: c# sql .net sql-server entity-framework