我试图使用DbSet.SqlQuery(string,object [])来返回从DbSet中的实体派生的实体。
根据文档(https://msdn.microsoft.com/en-us/library/system.data.entity.dbset.sqlquery(v=vs.113).aspx):
,这应该是可能的创建一个原始SQL查询,该查询将返回此集合中的实体。默认情况下,返回的实体由上下文跟踪;这可以通过在返回的DbRawSqlQuery上调用AsNoTracking来更改。请注意,返回的实体始终是此set的类型,而不是派生类型。如果查询的表可能包含其他实体类型的数据,则必须正确编写SQL查询以确保仅返回正确类型的实体
这可能吗?我还没有办法做到这一点。
我尝试使用Database.SqlQuery但是没有跟踪返回的实体,也没有设置导航属性(我需要)。
我的代码看起来像这样:
var sel = '#RadMenu1 > ul > li:nth-child(3)'; // top-level menu
var elem = element(by.css(sel));
elem.click().then(function () {
var elem2 = element(by.css(sel));
browser.sleep(2000);
// OPENS SUBMENUS
browser.actions()
.mouseMove(elem2, { x: 25, y: 50 }) // an offset relative to the top-left corner of elem2
.click()
.perform()
.then(function () {
browser.sleep(1000);
browser.actions()
.mouseMove({ x: 150, y: 20 }) // opens next menu option
.click()
.perform()
.then(function () {
var elem = element(by.cssContainingText('.rmText', 'Menu Item To Click'));
elem.click();
});
});
});
}
答案 0 :(得分:1)
我找到了解决这个问题的方法。我所要做的就是为派生类型添加一个额外的DbSet并在该集合上运行SqlQuery,如下所示:
public class MyContext : DbContext
{
DbSet<Notifikation> Notifications { get; set; }
DbSet<PageNotifikation> PageNotifications { get; set; }
}
MyContext.PageNotifications.SqlQuery(...)