E.F.核心NOTKEY属性或Fluent API?

时间:2018-12-05 00:05:15

标签: entity-framework

我有一个实体,该实体“必须”具有名为 Id 的属性。 EF Core希望将其用作密钥,但我想避免这种情况。

builder.HasKey(e => e.Id);流畅的API所做的与我想要的相反。

让我解释一下。

我有一个PlayerView实体和一个IEntityTypeConfiguration,它们为我的DbContext定义了一个视图。

public class PlayerView : EntityDto
{
    public Guid Id { get;  set; }

    public string FirstName { get; set; }
    public string LastName { get; set; }
    etc...

public class PlayerViewConfiguration : DataContextBaseEntityTypeConfiguration, IEntityTypeConfiguration<PlayerView>
{
    public void Configure(EntityTypeBuilder<PlayerView> builder)
    {
        builder.ToTable(nameof(PlayerView));

        builder.Metadata.IsQueryType = true;

        // builder.HasKey(e => e.Id); **//TODO THE OPPOSITE PLEASE**
    }
}

然后我将调用var queryable = context.Query ();以获得对基础视图的访问。

但是由于视图不能具有索引并且考虑到EF会推断Id属性的索引。因此,在构建模型时出现以下错误。

键{'Id'}不能添加到查询类型'PlayerView'。查询类型不能有键。

我只想告诉EF Core,请不要使用Id作为密钥。

BR

0 个答案:

没有答案