我一直在寻找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我想要使用的导航属性来自已经存在的视图?