我正在使用Entity Framework Core和Fluent API进行ASP.NET Core(2.2)项目。 我想将两个表列(其中一个是主键)映射到一个模型属性。
让我们假设我们有一个名为 sample_table 的表,该表由列组成:
|---------------------|------------------|------------------|
| Column1_PK | Column2 | Column3 |
|---------------------|------------------|------------------|
我想将模型字段映射到多列。我猜想我可以嵌套多个HasColumnName
,如下例所示:
public class MyContext : DbContext
{
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<MyModel>().ToTable("sample_table");
builder.Entity<MyModel>()
.HasKey(m => m.MyId);
builder.Entity<MyModel>()
.Property(m => m.MyId)
.HasColumnName("Column1_PK")
.HasColumnName("Column2"); // I would like to map the Column1_PK and Column2 to m.MyId
builder.Entity<MyModel>()
.Property(m => m.OtherColumn)
.HasColumnName("Column3");
}
}
以上方法无效。 有什么方法可以实现这种功能?
答案 0 :(得分:0)
是否将其映射到MyModel
类中?
public class MyModel
{
public string MyId
{
get
{
if (Column1_PK != Column2)
{
// TODO: handle if values are not equal
}
else
{
return Column1_PK;
}
}
set
{
Column1_PK = value;
Column2 = value;
}
}
public string Column1_PK { get; private set; }
public string Column2 { get; private set; }
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<MyModel>()
.HasKey(m => m.Column1_PK); // this seems to be the actual PK based on my understanding
builder.Entity<MyModel>()
.Ignore(m => m.MyId);
}