实体框架,将视图映射到表

2024-04-27

我有一个基本视图,它返回与表相同的列(给出或获取 1 个字段)

在我的 DAL 代码中,我返回 MyTableObject 的列表,但在某些情况下,我将调用视图返回相同的数据,但来自不同的源。

List<MyTableObject> tableObjects = new List<MyTableObject>();
if (case1)
  tableObjects = entities.MyTableObjects.Where(criteria).ToList();
else
  tableObjects = entities.MyViewObjects.Where(criteria).ToList(); // <-- This will obviously break
return tableObjects;

有没有办法将映射视图实体作为表实体返回? (除了让表和视图实现相同的接口并返回该接口之外)我想将返回类型保留为 MyTableObject。

我碰到自动映射器 http://automapper.codeplex.com/,但不确定是否适合这种情况。


看来我找到了一个很酷的解决方案..

最初我尝试实现接口方法并遇到一些问题选角问题 https://stackoverflow.com/questions/3997055/entityframework-casting-issues(与我的谓词构建器一起使用接口),并且还必须为实现该接口的每个实体创建部分类。

答案..POCOs.

Iused EF 的 Poco 模板 https://learn.microsoft.com/en-us/archive/blogs/adonet/walkthrough-poco-template-for-the-entity-framework,而不是简单地编辑 xxxPocoGenerator.Context.tt 以从 MyViews 集合返回 MyTable 对象(一行)。

public ObjectSet<Trade> v_Trade {
        get { return _v_Trade  ?? (_v_Trade = CreateObjectSet<Trade>("Trades")); }
}

好,易于..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架,将视图映射到表 的相关文章

随机推荐