【发布时间】:2012-11-08 21:40:14
【问题描述】:
我创建了一个 SQL Server 视图,它在我的模型中的其他表/实体上执行一些相当复杂的逻辑,并公开一系列列。除了其中一列之外,所有列都是简单类型(bigints、nvarchars 等),但其中一列是我的模型中的复杂实体。
我创建了一个映射到该视图的实体,如下所示:
public class NetworkSuppliersByClient : Entity, IKeyed<long>
{
public long NetworkSuppliersByClientId { get; set; }
public long NetworkId { get; set; }
public String NetworkName { get; set; }
public long OwningClientId { get; set; }
public long ClientId { get; set; }
public virtual Supplier Supplier { get; set; }
public bool PublicEntry { get; set; }
public long GetKey ()
{
return NetworkSuppliersByClientId;
}
}
如您所见,Supplier 条目映射到模型中的现有实体,它本身是具有其他包含实体(也称为表)的复杂类型。
我遇到的问题是,当我尝试从视图中读取时,我收到错误“实体类型 NetworkSuppliersByClient 不是当前上下文模型的一部分。强>”。
但是,当我尝试将具有上下文的实体注册为 DbSet 时,我收到错误“数据库中已经有一个名为“NetworkSuppliersByClients”的对象。 " 因为它试图创建一个与现有视图同名的表。
有什么办法可以解决这个问题,例如禁止 EF 在启动时尝试创建表,还是有更好的方法从视图中读取?
【问题讨论】:
-
我也有类似的问题。很想听听如何解决这个问题:)
标签: sql-server entity-framework ef-code-first