我正在尝试以只读模式将 ASP.NET Core Web 应用程序连接到现有的、非常复杂的数据库。
数据库非常复杂,无法将其布局直接映射到 EFC,我只是通过一组查询访问它的数据。这些查询是明确定义的,因此我可以毫无问题地提前定义与其结果匹配的对象。
但是,我似乎不知道如何为此定义数据库上下文的实体模型。当然,我不能在模型类上设置TableAttribute - 因为模型不反映一个表,而只是一个查询结果。只是将ColumnAttribute添加到模型的属性中似乎也不起作用,在数据库上下文中的OnModelCreating方法中,我总是收到错误“InvalidOperationException:实体类型'MyEntityModel'需要定义一个键。”
我应该定义什么键?好像查询没有其结果条目的键,或者它/我可以让它有一个吗?
不幸的是,我无法更改数据库以添加新视图、临时表或其他任何内容,我(可以)只有读取权限。
很可能我还没有理解 EF 背后的概念,但是我看到的所有教程/示例都只处理最基本和最简单的案例,我的 google-fu 似乎也让我失望了。
虽然看起来使用基本的连接查询断开无 EF 解决问题可能是可能的,但在我看来,采用 DtabaseContext/EF 方式更符合 ASP.NET Core 的原则。如果我在那里错了,请随时不同意或告诉我。
任何可能显示另一种方法来完成这项工作的样本也将受到高度赞赏。