我在两台服务器上有两个数据库。我的应用程序主要在 server1 上使用 db1。但是,我只会在 server2 上的 db2 中读取一张表。
我们没有为 db2 创建一个新的 DbContext,而是创建了一个链接服务器并在 db1 中为该表设置了一个同义词。我在我的 db1 Code First 上下文中为此设置了映射。这似乎有效,我可以检索数据。
但是,如果我在谓词中使用任何日期,则会收到以下错误:
A failure occurred while giving parameter information to OLE DB provider "SQLNCLI10" for linked server "server2".
我的映射如下所示:
ToTable("synonym");
Property(t => t.Id).HasColumnName("ID");
Property(t => t.Company).HasColumnName("Company");
Property(t => t.StartDate).HasColumnName("StartDate");
Property(t => t.EndDate).HasColumnName("EndDate");
Property(t => t.LastUpdatedDate).HasColumnName("LastUpdatedDate");
Property(t => t.LastUpdatedBy).HasColumnName("LastUpdatedBy");
我正在尝试运行以下查询:
_context.Set<Synonym>()
.Any(s => s.Company == company
&& s.StartDate <= date
&& (s.EndDate >= date || s.EndDate == null));
如果我删除日期,查询运行良好。
server1 是 SQL 2008
server2 是 SQL 2005
我发现这个线程表明日期存在某种问题,但我不知道如何将其应用于实体框架。