使用SQL视图作为导航属性

时间:2018-03-06 08:51:57

标签: entity-framework tsql ef-code-first

我一直在寻找EF6 Code First中我想要的东西。 我在我的数据库中添加了一个View。

CREATE VIEW MyView AS 
    SELECT x.Id, x.Something, y.SomethingElse
    FROM ....

我还有一个主键为Id的实体:

public class MyEntity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
}

所以,现在,我想做的是向MyEntity添加一个导航属性,如下所示:

public class MyEntity
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public ICollection<MyViewEntity> MyView { get; set; } = new Collection<MyViewEntity>();
}

注意:我发现了this个问题。我想做的是相反

为此,我创建了一个类并添加了一个外键属性来表示关系。

[Table("MyViewEntity")] // Hardcoded name, no -s suffix
public class MyViewEntity
{
    public int MyEntityId { get; set; }
    [ForeignKey("BusinessId,StatementId")]
    public MyEntity MyEntity { get; set; }

    public int Something { get; set; }
    public int SomethingElse { get; set; }
}

我忘记了某些内容或我想要的内容是不可能的,因为我得到了一个错误,那就是有待迁移。如果我运行Add-Migration test,EF Code First会尝试创建一个表&#34; MyViewEntity&#34;具有MyEntityId,Something,SomethingElse属性。

如何告诉Entity Framework我想要使用的导航属性来自已经存在的视图?

0 个答案:

没有答案