小编Spl*_*san的帖子

将对象映射为实体框架核心中的标识列

是否可以将映射对象作为标识列,并生成值 typeof int ?我尝试过这样,但这没有帮助。我有错误

标识值生成不能用于实体类型“Article”上的属性“Id”,因为属性类型为“ArticleId”。标识值生成只能与有符号整数属性一起使用。

    public class ArticleId
    {
        public int Value { get; private set; }

        public ArticleId(int value)
        {
            Value = value;
        }
    }

    public class Article 
    {

        public ArticleId Id { get; set; }
        public string Name { get; set; }
    }
     
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        var converter = new ValueConverter<ArticleId, int>(
                                    v => v.Value,
                                    v => new ArticleId(v)
        );

       modelBuilder
       .Entity<Article>()
       .Property(p => p.Id)     
       .HasConversion(converter)
       .ValueGeneratedOnAdd()
       .UseIdentityColumn();

       base.OnModelCreating(modelBuilder);
    }
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

10
推荐指数
1
解决办法
1653
查看次数

标签 统计

c# ×1

entity-framework-core ×1