我创建了一个 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 在启动时尝试创建表,或者有更好的方法从视图中读取?