Asp.net mvc 结合使用EF和MVC

Asp.net mvc 结合使用EF和MVC,asp.net-mvc,entity-framework-5,Asp.net Mvc,Entity Framework 5,我想使用EntityFramework5,从中我可以使用一个可以跨两个或多个数据库的MVC模型 这可能吗 换句话说,一个EF模型可以使用两个或多个数据库。因为有了MVC,一个视图中只能使用一个模型。带有某些视图的某些数据可能来自不同的数据库。为了在MVC中使用模型绑定器并将其映射到EF 5列,我需要完成这项工作。ASP.NET MVC不依赖实体框架。 NET MVC是一个框架,用于构建符合模型-视图-控制器模式的web应用程序它没有绑定到实体框架。它可以与任何数据访问技术一起工作,如LINQ2S

我想使用EntityFramework5,从中我可以使用一个可以跨两个或多个数据库的MVC模型

这可能吗


换句话说,一个EF模型可以使用两个或多个数据库。因为有了MVC,一个视图中只能使用一个模型。带有某些视图的某些数据可能来自不同的数据库。为了在MVC中使用模型绑定器并将其映射到EF 5列,我需要完成这项工作。

ASP.NET MVC不依赖实体框架。

NET MVC是一个框架,用于构建符合模型-视图-控制器模式的web应用程序它没有绑定到实体框架。它可以与任何数据访问技术一起工作,如LINQ2SQL/Entity Framework/Pure ADO.NET等。。这意味着您可以使用或不使用实体框架开发MVC应用程序

我假设您希望从两个不同的数据库获取数据并加载一个模型对象。您可以通过编写一个select查询来实现这一点,该查询从两个数据库获取数据,并将其放入存储过程中,然后将该过程放入DbContext正在与之通信的数据库中。然后执行存储的过程并加载模型对象

从2个数据库获取数据的示例过程

CREATE PROCEDURE GetCustomer(@id int)
AS
  BEGIN
    SELECT C.ID,A.DateReceived
    FROM  FirstServerName.DbName.dbo.Customer C
    INNER JOIN  SecondServerName.DbName.dbo.Applications A
    ON A.CustomerID=C.CustomerID
    AND A.CustomerID=@id
  END
要使用实体框架执行存储的过程,可以使用
Database.SqlQuery
方法

  var idParam = new SqlParameter { ParameterName = "@Id", Value = 414};
  var result = context.Database.SqlQuery<Customer>
                                      ("exec GetCustomer @Id", idParam).ToList();
var idParam=newsqlparameter{ParameterName=“@Id”,Value=414};
var result=context.Database.SqlQuery
(“exec GetCustomer@Id”,idParam.ToList();
这将执行您的proc并将数据加载到
Customer
类的实例中,假设结果集结构和模型类结构看起来相似


您可能需要调整存储过程的权限,以便从相关数据库/表读取数据。

Shyju的意思是,MVC不关心或不了解您的实体框架数据模型或数据库。因此,MVC模型可以跨越两个数据库的想法就像说一架飞机可以跨越两个锤子一样。

如上所述,MVC中的M是您想要的。微软并没有指定实际的型号。它当然不必是EF模型(尽管MS的一些代码示例将其用作示例)


我建议M应该是一个ViewModel,并且应该与您的数据层无关。然后使用Automapper之类的工具将域模型映射到ViewModel。ViewModel封装了要显示的数据以及要显示的任何特定web视图特定信息。然后,当您发回ViewModel时,您可以使用它来更新域模型、适当的字段等,并将其持久化到两个数据库。这是一篇关于ViewModels主题的好文章

那么,我要做的就是简单地将两个数据库中的一个模型创建为一个,并使用这个模型,而不是每个单独的edmx模型。对吧?你的两个评论都是好主意,谢谢。。。。我会的。在组合EF通过edmx文件生成的两个模型时,我看到的唯一问题是,一旦组合了模型,数据库中的任何架构更改都必须在我新组合的模型中手动更新……此外,如果模型(来自其中一个edmx文件)具有存储过程中我需要的所有列,那就好了。无需合并其他edmx文件中的模型。但是,如果存储过程返回的列不在一个edmx文件类中,则此时我需要将edmx cs类合并到一个单独的模型中,以处理其他列的数据。对的