Spl*_*san 10 c# entity-framework-core
是否可以将映射对象作为标识列,并生成值 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)
只需将此 Attribute 用于类Id中的属性即可Article:
public class Article
{
[Column(TypeName = "int IDENTITY(1,1)")]
public ArticleId Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
迁移部分将是这样的:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Articles",
columns: table => new
{
Id = table.Column<int>(type: "int IDENTITY(1,1)", nullable: false),
Name = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Articles", x => x.Id);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |