Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EF 6.1.3中带“;“链接服务器”;_Entity Framework_Linked Server - Fatal编程技术网

Entity framework EF 6.1.3中带“;“链接服务器”;

Entity framework EF 6.1.3中带“;“链接服务器”;,entity-framework,linked-server,Entity Framework,Linked Server,我正在使用SQL Server 2012和EF 6.1.3 我有一个中央数据库a和另一个链接到数据库a的数据库B。这两个数据库用于两个不同的应用程序 在数据库B中,我有一些视图,这些视图与中央数据库A中的一些表完全相同 我期望的是,当我在数据库B的视图中插入/更新/删除记录时,这些记录将在中央数据库A中插入/更新/删除 对于使用数据库B的应用程序(这是链接服务器,而不是中央数据库),我使用EF生成视图(使用电动工具)。生成的代码看起来不错,但是,当然,生成的实体没有主键属性,也没有导航属性 您能

我正在使用SQL Server 2012和EF 6.1.3

我有一个中央数据库a和另一个链接到数据库a的数据库B。这两个数据库用于两个不同的应用程序

在数据库B中,我有一些视图,这些视图与中央数据库A中的一些表完全相同

我期望的是,当我在数据库B的视图中插入/更新/删除记录时,这些记录将在中央数据库A中插入/更新/删除

对于使用数据库B的应用程序(这是链接服务器,而不是中央数据库),我使用EF生成视图(使用电动工具)。生成的代码看起来不错,但是,当然,生成的实体没有主键属性,也没有导航属性

您能提供解决方案吗?

EF(电动工具)使用系统表检索架构,如果在数据库a上运行电动工具,则无法检索有关链接表的导航信息。最好的方法可能是从数据库B开始为数据库B生成类(删除从数据库A开始生成的相同类),然后混合这两个数据库。

最后,您混合了这两个模型(将导航属性从A模型添加到B模型,反之亦然)。

我曾经遇到过类似的情况,我的问题是数据库B中的存储过程(我通过我的中央数据库中的链接服务器访问了这个对象,我们称之为数据库A。由于一些公司的政策,无法映射数据库B),EF 6不允许您在使用数据库优先方法时在EDMX文件中映射此存储过程,因此我发现了一种欺骗实体框架的方法

很简单,我刚刚在数据库A中添加了一个SQL同义词,这个对象指向数据库B中的视图/存储过程/表(见附图)

当然,在本例中,我在数据库B中创建了存储过程的同义词,然后在方法中执行存储过程,如下所示:

SqlParameter paramNumber1 = new SqlParameter("@firstParameter", someVariable);
//We need to create a class for the Synonym result, which origin is: [Server].[Database].[dbo].[RemoteStoredProcedure]
var result = ctx.Database.SqlQuery<classForTheSPResult>("RemoteStoredProcedure @firstParameter", paramNumber1).ToList();
using (var context = new BloggingContext()) 
{ 
    var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList(); 
}

我希望我的评论对你有所帮助。

你能更清楚地说明这个问题吗。问题是从视图生成的对象没有PK属性吗?链接服务器与此有关吗?我相信有一些解决方法可以解决视图缺少PK的问题。嗨,Nick.McDermaid,是的,对象没有PK,没有导航道具erties。你能带我去看一个指南吗?这里有一个解释,说明如何欺骗EF,使其认为你的视图有PK:。公认的答案是一个解决方法。进一步解释,它说明了如何在不破坏视图的情况下实现它。谢谢大家,我意识到我不需要使用“链接服务器”。我正在考虑使用“复制”相反,您好,bubi,我没有在中央数据库A中运行EF Power Tools。我在数据库B中运行该工具。生成的类没有导航属性。您的意思是我将手动添加导航属性?导航属性是自动生成的。DBMS是B吗?您使用的是EDMGEN吗?不,我使用的是EF Power Tools,n不会为视图对象生成导航属性。SQL Server 2012适用于所有A和B。谢谢大家,我意识到我不需要使用“链接服务器”。我正在考虑改用“复制”。